我已经配置了一个 Jenkins 作业来获取一个 bash 脚本,该脚本获取另一个.bashrc
bash 脚本,该脚本为其用户添加别名并获取.bashrc
自身,然后原始脚本尝试使用该别名(由第二个设置)。但是,它似乎找不到它刚刚创建的别名。除了使用“发送文件或通过 SSH 执行命令”构建步骤来获取脚本之外,我没有使用任何脚本插件。
这项工作是这样做的:
source ./test_script.sh
test_script.sh
看起来像这样:
echo "In test_script.sh"
echo $USER
echo $HOME
source ./setup_env.sh
echo "\nBack in test_script.sh"
alias foo
foo
最后,setup_env.sh
看起来像这样:
echo "\nIn setup_env.sh"
echo "alias foo=\"echo foobar\"" >> $HOME/.bashrc
source $HOME/.bashrc 2>/dev/null
cat $HOME/.bashrc
我从 Jenkins 工作中收到的输出如下所示:
In test_script.sh
my_user
/home/my_user
\nIn setup_env.sh
...all of my bashrc...
alias foo="echo foo"
\nBack in test_script.sh
alias foo='echo foo'
./test_script.sh: line 7: foo: command not found
我不明白为什么会这样,当我可以自己在命令行上愉快地运行它并看到它成功时。为什么 Jenkins 不能使用新别名,而它显然可以找到它(如alias foo
命令的输出所示)?