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

时间:2015-05-20 08:23:15

标签: linux bash shell docker env

我正在玩docker CentOS图像,并在终端中找到执行“/usr/bin/env bash -x”命令正常:

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

两种方法之间有什么区别吗?

2 个答案:

答案 0 :(得分:3)

简短的回答是你只能通过"#!"指定给解释器一个参数。机制。那变成了" bash -x"。

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

#!/bin/bash -x -i

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

Sven Mascheck在his page中对此主题发表了评论:

  

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

答案 1 :(得分:1)

shebang系最多只能有一个参数 当您提供更多参数时,它们将不会被拆分。您可以将其与命令行命令

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