为什么“/ usr / bin / env bash -x”只能在命令行中工作?
我正在玩一个docker CentOS
镜像,在terminal里find执行“ /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在关于这个话题的页面上对此进行了评论:
大多数系统将所有参数作为单个string传递
shebang行最多只有一个参数。
当你提出更多的论据时,他们不会被分裂。 你可以比较这个命令行命令
bash-4.1# /usr/bin/env "bash -x"