为什么"/usr/bin/env bash -x"只能在命令行中使用?



我正在使用docker CentOS图像,并发现在终端中执行" /usr/bin/env bash -x "命令是OK的:

bash-4.1# /usr/bin/env bash -x
bash-4.1# exit
+ exit
exit

但将此命令写入脚本并执行后,它不工作,并提示" No such file or directory ":

bash-4.1# ls -lt a.sh
-rwxr-xr-x. 1 root root 23 May 20 04:27 a.sh
bash-4.1# cat a.sh
#!/usr/bin/env bash -x
bash-4.1# ./a.sh
/usr/bin/env: bash -x: No such file or directory

两种方法有什么区别吗?

简短的回答是,您只能获得一个通过"#!"机制指定的解释器参数。它变成了"bash -x"。

通常限制更明显,例如,使用

#!/bin/bash -x -i

将传递"-x -i"作为参数,并得到意想不到的结果。

Sven Mascheck在他的页面上评论了这个话题:

大多数系统将所有参数作为单个字符串

传递

shebang行最多只能有一个参数。
当你给出更多的论据时,他们不会分裂。您可以将其与命令行命令

进行比较
bash-4.1# /usr/bin/env "bash -x"

相关内容

  • 没有找到相关文章

最新更新