AppleScript:'Which <command>' 以非零状态退出
AppleScript: 'Which <command>’ exited with non zero status
我知道当用 do shell script
调用 shell 命令时它不会搜索所有位置,所以我应该使用完整路径来命令。因此,我现在做的是set cmmd to (do shell script “which <command>”)
,然后是do shell script cmmd…
。但是,前一行给出了一个错误:The command exited with non-zero status。我不明白为什么会这样,当终端中的相同命令正常退出时。
解决这个问题的方法是什么?还有我应该使用的更好的方法吗?
我推测这些命令在您的终端 window 中有效,因为您已将路径添加到 .bashrc
或其他任何地方。
快速修复是在终端窗口中 echo $PATH
,将结果复制到剪贴板,然后在您的 do shell 脚本命令前加上 export PATH=<your paths> ;
。 (你真的必须以分号结尾。)现在你可以使用which命令来查找你的东西,我推荐使用which -a
,这样你就可以得到所有的列表您的实用程序出现次数。
which
命令使用shell环境变量$PATH
在不同的目录中搜索。 whereis
等类似命令将使用 sysctl 并查找 属性 user.cs_path
。不同之处在于,无论您当前处于哪个环境,whereis
都会给出相同的输出。如果变量 $PATH
之间不同,which
可以 return 不同的结果shells.
Terminal 和 do shell script
命令的区别在于它们使用不同的 shell。终端可能在您的机器上使用 bash 而 do shell script
正在使用 sh,它实际上是 bash 但在另一种模式下是 运行。在终端中使用 echo $PATH
shell 命令和使用 do shell script
命令时,您将得到不同的结果。这解释了为什么 do shell script
命令中缺少路径。可能使用 whereis
不会在 do shell 脚本和终端中给出任何结果,因为它搜索的目录数量较小。
对我来说,如果有人想要与终端中相同的输出,那么解决这个问题的最简单方法就是调用与终端相同的 shell,而不是尝试从中复制变量。您可能要使用的命令是:
do shell script "bash -l -c 'which <command>'"
我知道当用 do shell script
调用 shell 命令时它不会搜索所有位置,所以我应该使用完整路径来命令。因此,我现在做的是set cmmd to (do shell script “which <command>”)
,然后是do shell script cmmd…
。但是,前一行给出了一个错误:The command exited with non-zero status。我不明白为什么会这样,当终端中的相同命令正常退出时。
解决这个问题的方法是什么?还有我应该使用的更好的方法吗?
我推测这些命令在您的终端 window 中有效,因为您已将路径添加到 .bashrc
或其他任何地方。
快速修复是在终端窗口中 echo $PATH
,将结果复制到剪贴板,然后在您的 do shell 脚本命令前加上 export PATH=<your paths> ;
。 (你真的必须以分号结尾。)现在你可以使用which命令来查找你的东西,我推荐使用which -a
,这样你就可以得到所有的列表您的实用程序出现次数。
which
命令使用shell环境变量$PATH
在不同的目录中搜索。 whereis
等类似命令将使用 sysctl 并查找 属性 user.cs_path
。不同之处在于,无论您当前处于哪个环境,whereis
都会给出相同的输出。如果变量 $PATH
之间不同,which
可以 return 不同的结果shells.
Terminal 和 do shell script
命令的区别在于它们使用不同的 shell。终端可能在您的机器上使用 bash 而 do shell script
正在使用 sh,它实际上是 bash 但在另一种模式下是 运行。在终端中使用 echo $PATH
shell 命令和使用 do shell script
命令时,您将得到不同的结果。这解释了为什么 do shell script
命令中缺少路径。可能使用 whereis
不会在 do shell 脚本和终端中给出任何结果,因为它搜索的目录数量较小。
对我来说,如果有人想要与终端中相同的输出,那么解决这个问题的最简单方法就是调用与终端相同的 shell,而不是尝试从中复制变量。您可能要使用的命令是:
do shell script "bash -l -c 'which <command>'"