使用Jenkins执行shell脚本的时候, 碰到command not found. 比如java mvn, 这些环境变量配置在/etc/profile
中, 但jenkins执行的时候并没有加载.
这是因为jenkins执行的shell是非登录交互式shell, 并不会加载/etc/profile.
交互式shell会加载.bashrc, 进而会加载/etc/bashrc, 而/etc/bashrc会加载/etc/profile.d/*.sh.
*因此, 自定义的变量应该定义在/etc/profile.d/.sh
1.登录shell
所谓登录shell,指的是当用户登录系统时所取的那个shell,登录shell属于交互式shell。
登录shell将查找4个不同的启动文件来处理其中的命令。 bash shell处理文件的顺序如下:
1:/etc/profile
2:/etc/profile.d等待配置文件
3:$HOME/.bash_profile 会加载$HOME/.bashrc和/etc/bashrc
4:$HOME/.bash_login
5:$HOME/.profile
2. 交互式非登录shell
如果启动了一个bash shell而没有登入系统(如在CLI提示符中键入bash),
则启动了一个交互式非登录shell.
$HOME/.bashrc
交互式非登录shell执行~/.bashrc文件中的命令.在每次执行shell脚本时,都