我正在玩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
两种方法之间有什么区别吗?
答案 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"