我在 .bashrc 的最顶部有这个,before非交互式 shell 的返回
FOO="BAR"; export FOO
echo "HELLO WORLD"
# If not running interactively, don't do anything
[ -z "$PS1" ] && return
我的主目录中有一个脚本 test.sh :
#!/bin/bash
echo "A"
echo $FOO
echo "B"
我执行test.sh。输出:
A
B
2个问题:
- 为什么我看不到 $FOO 的值?
- 为什么我看不到“HELLO WORLD”?
edit:我认为带有 #!/bin/bash 的脚本会触发一个子 shell,它将再次调用 .bashrc,我错了吗?
edit:即使我确实从另一台主机调用脚本,我也不会看到任何值。即使这样,.bashrc 也会被执行???
ssh remotehost "/home/username/test.sh"
.bashrc
仅针对非登录交互式 shell 自动获取。通常,你会放. .bashrc
接近你的开始.bash_login
文件,以确保.bashrc
源自登录和非登录交互式 shell。
.bashrc
对于非交互式 shell,例如执行 shell 脚本时启动的 shell,不会自动获取源。
既然你导出了FOO
from .bashrc
,事实是test.sh
sees FOO
如果值为空,则表明您正在从登录 shell 运行脚本。做echo $FOO
从提示打印BAR
?如果确实如此,我会感到惊讶test.sh
没有。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)