在非交互式shell的返回之前,我将以下内容放置在我的.bashrc文件的顶部:
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”?
编辑: 我以为带有#!/bin/bash的脚本会触发一个子shell,该子shell将再次调用.bashrc,我错了吗?
编辑: 即使我从另一台主机调用脚本,我也看不到任何值。甚至在那种情况下,.bashrc也不会被执行吗?
ssh remotehost "/home/username/test.sh"
.bashrc
不会被执行。这也意味着shell脚本不会在子shell中运行?如果事情是这么简单的话,我错了很长时间并将接受这个答案。 - Preexo.bashrc
。在bash
中,您可以使用BASH_ENV
变量指定在非交互式shell启动时要源的文件。 - chepner