40

我看到一个客户端执行$bash -x命令来查看文件是否可执行(或ksh -x命令等),就像shell 脚本-x中的语句一样。if

我的问题是:命令做什么$bash -x

我的解释是在当前 shell 中的新 bash shell 中启动一个命令,继承相同的环境变量并由同一用户执行。

有趣的是我可以做$ls但不能$bash -x ls,这给出了:

(在 AIX 6 下) /usr/bin/ls: /usr/bin/ls: cannot execute binary file

对我来说,为什么错误是一个谜——猜测是由于特权,这意味着我上面的假设是不正确的。

另外,我相信$bash ls并且$bash -x ls是同一件事(-x对于“执行”)?

任何意见都非常感谢。

干杯!

4

2 回答 2

61

-x选项以跟踪模式启动 BASH shell。您可以查看有关如何处理命令/脚本的所有详细信息。如果您的脚本不符合您的预期,这是查找一些错误的好方法

而且,正如 Alex在评论中所说,要在 BASH 中运行命令,您必须使用-c类似bash -x -c ls.

请参阅man bash或在线手册,特别是有关调用 Bash内置命令的部分set获取更多信息:

调用 shell 时,所有与内置函数一起使用的单字符选项set(请参阅 The Set Builtin)都可以用作选项。

-x

在展开之后和执行之前打印简单命令、for命令、case命令、select命令和算术for命令及其参数或相关单词列表的轨迹。变量的值PS4被扩展,结果值在命令及其扩展参数之前打印。

于 2012-04-11T13:43:24.403 回答
8
  • bash -x <file>运行脚本<file>并跟踪执行的每个命令

  • test -x <file>测试<file>当前用户是否有执行权限。

看来你把这两个弄混了。

于 2016-07-11T16:59:27.323 回答