Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.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
Macos AppleScript:';哪个<;指挥部>’;以非零状态退出_Macos_Shell_Applescript - Fatal编程技术网

Macos AppleScript:';哪个<;指挥部>’;以非零状态退出

Macos AppleScript:';哪个<;指挥部>’;以非零状态退出,macos,shell,applescript,Macos,Shell,Applescript,我知道当使用do shell script调用shell命令时,它不会搜索所有位置,所以我应该使用命令的完整路径。因此,我要做的是将cmmd设置为(doshell脚本“which”),然后将shell脚本cmmd…。但是,前一行给出了一个错误:命令以非零状态退出。我不明白为什么会发生这种情况,当终端中的同一个命令很好地退出时 你会为此做些什么?还有一种更好的方法我应该使用。我猜想这些命令在终端窗口中有效,因为您添加了.bashrc或其他路径。 快速修复方法是在终端windo中echo$PATH,

我知道当使用
do shell script
调用shell命令时,它不会搜索所有位置,所以我应该使用命令的完整路径。因此,我要做的是
将cmmd设置为(doshell脚本“which”)
,然后
将shell脚本cmmd…
。但是,前一行给出了一个错误:命令以非零状态退出。我不明白为什么会发生这种情况,当终端中的同一个命令很好地退出时


你会为此做些什么?还有一种更好的方法我应该使用。

我猜想这些命令在终端窗口中有效,因为您添加了
.bashrc
或其他路径。
快速修复方法是在终端windo中
echo$PATH
,将结果复制到剪贴板,然后在do shell脚本命令前面加上
export PATH=。(你真的必须以分号结尾。)现在你可以使用which命令来查找你的资料,我建议使用
which-a
,这样你就可以得到所有实用程序的列表。

which
命令使用shell环境变量
$PATH
在不同的目录中搜索。类似的命令,如
whereis
将使用sysctl并查找属性
user.cs\u path
。不同之处在于,
whereis
将提供相同的输出,无论您当前处于哪个环境中
如果shell之间的变量
$PATH
不同,则它可以返回不同的结果

终端和
do shell脚本
命令之间的区别在于,它们使用两种不同的shell。终端可能在您的机器上使用bash,而
doshell脚本
正在使用sh,它实际上是bash,但在另一种模式下运行。在终端中使用
echo$PATH
shell命令和使用
do shell脚本时,您将得到不同的结果。这解释了为什么
do shell脚本
命令中缺少路径。可能使用
whereis
在do shell脚本和终端中都不会给出结果,因为它搜索的目录数量较少

对我来说,如果任何人想要与终端中相同的输出,解决这个问题的最简单方法就是调用与终端相同的shell,而不是试图从中复制变量。您可能要使用的命令是:

do shell script "bash -l -c 'which <command>'"
do shell脚本“bash-l-c'which'”

找不到的命令是内置命令吗?如果是,该命令是什么?