bash-x命令
我看到一个客户端正在执行bash-x命令,bash,Bash,我看到一个客户端正在执行$bash-x命令,以查看该文件是否可执行(或ksh-x命令等),就像shell脚本中if语句中的-x一样 我的问题是:命令的作用是什么 我的解释是在当前shell中的新bashshell中启动一个命令,继承相同的环境变量并由相同的用户执行 有趣的是,我可以做$ls,但不能做$bash-xls,这会给出: (在AIX6下) /usr/bin/ls:/usr/bin/ls:无法执行二进制文件 对我来说,这个错误的原因是一个谜——猜测它是由于一种特权,这意味着我上面的假设是不
$bash-x
命令,以查看该文件是否可执行(或ksh-x
命令等),就像shell脚本中if
语句中的-x
一样
我的问题是:命令的作用是什么
我的解释是在当前shell中的新bashshell中启动一个命令,继承相同的环境变量并由相同的用户执行
有趣的是,我可以做$ls
,但不能做$bash-xls
,这会给出:
(在AIX6下)
/usr/bin/ls:/usr/bin/ls:无法执行二进制文件
对我来说,这个错误的原因是一个谜——猜测它是由于一种特权,这意味着我上面的假设是不正确的
另外,我相信$bash ls
和$bash-x ls
是一回事(-x
表示“执行”)
如有任何意见,我们将不胜感激
干杯 在跟踪模式下,
-x
选项启动BASH shell。您可以看到有关如何处理命令/脚本的所有详细信息。如果您的脚本没有达到预期的效果,那么这是找到一些bug的好方法
正如Alex所说,要在BASH中运行命令,必须使用-c
选项,如BASH-x-cls
有关更多信息,请参见man bash
或在线手册,特别是和上的零件:
调用shell时,与set
builtin一起使用的所有单字符选项(请参见set builtin)都可以用作选项
-x
打印简单命令的跟踪,用于
命令,大小写
命令,选择
命令,以及命令及其参数或相关单词列表的算术,这些命令在展开后执行之前。将展开PS4
变量的值,并在命令及其展开参数之前打印结果值
运行脚本bash-x
,跟踪执行的每个命令
测试测试-x
是否具有当前用户的执行权限
您似乎混淆了这两个问题。要在启用调试模式(-x)的情况下执行bash命令,请使用
bash-x-c您的_命令
感谢Alex的简明回答,bash-x-c ls会按照您所描述的做。所以,“$bash-x命令查看文件是否可执行”是错误的:)非常感谢@Khiet如果你想知道一个文件是否是可执行的,而不仅仅是键入ls-l命令
@Tomas,是的,我们目前面临的有趣问题是一个二进制文件,其中-rwxr-xr-x给出了“无法执行二进制文件”。已检查所有者/组,可能已损坏,但到目前为止运气不佳。不管怎样,我不希望我的整个工作都能在这里完成:)干杯!要检查文件是否可执行,请在bash中使用[-x file\u in\u question]
,如果文件可执行,则返回0。您可以通过使用问题中的file file\u
获取文件内容的详细描述来检查文件的类型Hanks Tomas,我们的虚拟机上没有安装man for bash,但联机手册页实际上说明了一切;(感谢大家这么快的回答,非常感谢!@Khiet不客气。如果您没有安装man,请在谷歌中键入manbash
,第一个链接通常是手册页:)