ansible(3)执行过程中系统环境变量

2021-02-21  本文已影响0人  hk_faith

问题

当某个软件如java安装在某个用户下,软件的环境变量放在 ~/.bash_profile~/.zshrc .SSH 远程执行脚本报错"command not found" .环境变量不生效。

login shell 和 non-login shell

Login shell : 登陆linux 系统的时候,要求输入 用户名和密码或者 SSH key 登陆时。

Non-login shell: 用 Ansible 在目标机器上远程执行Shell 脚本的时候,就是non-login shell

linux bash 环境配置文件

终端运行 man bash

FILES
       /bin/bash
              The bash executable
       /etc/profile
              The systemwide initialization file, executed for login shells
       /etc/bash.bashrc
              The systemwide per-interactive-shell startup file
       /etc/bash.bash.logout
              The systemwide login shell cleanup file, executed when a login shell exits
       ~/.bash_profile
              The personal initialization file, executed for login shells
       ~/.bashrc
              The individual per-interactive-shell startup file
       ~/.bash_logout
              The individual login shell cleanup file, executed when a login shell exits
       ~/.inputrc
              Individual readline initialization file

参考 鸟哥私房菜:

non-login shell 的环境配置问题的解决

方法1: 把配置放在 non-login shell 加载下的文件

方法1:如果把配置放在 ~/.bash_profile 中,需要non-login shell 时先 source ~/.bash_profile 再执行命令

虽然大多数情况下,在Shell开头用#!/usr/bin/env bash比#!/bin/bash更有通用性,但是在通过SSH远程执行Shell脚本时,Shell开头要用#!/bin/bash

Ansible的become进行用户切换

参考

become 官方参考文档

上一篇下一篇

猜你喜欢

热点阅读