Bash shebang选项-l

Emm*_*uel 17 bash shell shebang

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

#!/bin/bash -l
...
echo TEST: $TEST
Run Code Online (Sandbox Code Playgroud)

从我所看到的,这对脚本中使用的变量有影响:

  • 如果我跑TEST=hey ./test.sh,我可以看到TEST: hop,hop作为TEST我的变量的价值.bash_profile
  • 如果我export TEST=hey在运行脚本之前这是相同的
  • 但是如果我删除了-l标志,那么同样的命令会返回TEST: hey,就像我预期的那样

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

dg9*_*g99 25

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