我正在使用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"