Bash shebang选项-l

时间:2013-12-10 16:17:51

标签: bash shell shebang

我使用了由其他人编写的脚本test.sh,以bash shebang开头:

#!/bin/bash -l
...
echo TEST: $TEST

从我所看到的情况来看,这会对脚本中使用的变量产生影响:

  • 如果我运行TEST=hey ./test.sh,我可以看到TEST: hophopTEST
  • 中变量.bash_profile的值
  • 如果我在运行脚本<{li>之前export TEST=hey,则相同
  • 但是如果我删除了-l标志,那么同样的命令会返回TEST: hey,正如我预期的那样

有人可以解释一下这种行为吗? bash的帮助没有帮助。

1 个答案:

答案 0 :(得分:22)

-l选项(根据man page)使“bash表现为好像已作为登录shell调用”。登录shell从主目录中读取某些初始化文件,例如.bash_profile。由于您在TEST中设置了.bash_profile的值,因此在bash启动时,您在命令行中设置的值会被覆盖。

相关问题