Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
bash-x命令_Bash - Fatal编程技术网

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
,第一个链接通常是手册页:)