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

问题

当某个软件如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

参考 鸟哥私房菜:

login shell加载环境变量的顺序是:① /etc/profile ② ~/.bash_profile ③ ~/.bashrc ④ /etc/bashrc

而non-login shell加载环境变量的顺序是: ① ~/.bashrc ② /etc/bashrc

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进行用户切换

参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值