Applescript 找不到MacOS Automator shell脚本命令,但在终端中可以正常工作

Applescript 找不到MacOS Automator shell脚本命令,但在终端中可以正常工作,applescript,zsh,automator,zshrc,Applescript,Zsh,Automator,Zshrc,我正试图通过npm“idasen control”(通过蓝牙控制宜家办公桌)从全球安装的软件包中自动执行一个命令。在MacOS Automator(zsh shell)中,当使用shell脚本时,我得到一个“未找到命令”,但如果我在终端中直接使用它,它就可以正常工作。如果我在自动机内部使用AppleScript并调用终端,它也可以工作。但这意味着每次我调用命令时终端窗口都会打开,这正是我想要避免的 这是一个有效的解决办法: tell application "Terminal"

我正试图通过npm“idasen control”(通过蓝牙控制宜家办公桌)从全球安装的软件包中自动执行一个命令。在MacOS Automator(zsh shell)中,当使用shell脚本时,我得到一个“未找到命令”,但如果我在终端中直接使用它,它就可以正常工作。如果我在自动机内部使用AppleScript并调用终端,它也可以工作。但这意味着每次我调用命令时终端窗口都会打开,这正是我想要避免的

这是一个有效的解决办法:

tell application "Terminal" to do script "idasen-control --move-to 14"
delay 0.8
tell application "Terminal" to close windows
这是我在终端中键入“echo$PATH”时发现的:

/Users/MYUSERNAME/.nvm/versions/node/v14.16.0/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
这就是我在Automator中以“运行Shell脚本”键入它时得到的结果:

我在.zshrc文件中添加了别名(第一行已经存在):


我运行“source~/.zshrc”,但这并没有帮助。我猜这只是一个路径问题,那么我应该向.zshrc文件添加什么来解决这个问题呢?

传递给
do shell script
命令或Run shell script操作的默认
“/usr/bin:/bin:/usr/sbin:/sbin”
路径之外的任何调用,需要使用完全限定的路径名,或将
PATH
语句作为复合命令包含在内,即实际的
PATH=$PATH
,其中
$PATH
是实际的
路径,后跟
do shell script
命令中的附加命令,或者作为运行shell脚本操作中的第一条语句。@user3439894从您的回答中有点难以理解,但这就是工作原理,定义路径,然后在每次调用命令时使用它:
将setPath设置为“路径=~/.nvm/versions/node/v14.16.0/bin;是否执行shell脚本setPath&“idasen control-m 14”
我也选择AppleScript而不是普通的运行shell脚本,因为灵活性(如果和对于循环、变量、对话框等)我现在遇到了另一个相关问题-当试图同时运行这两个命令时,脚本编辑器会无限期地运行。在终端中,命令如下所示:
“idasen控件--server&blueutil--disconnect[address]
,我在编辑器中编写:
执行shell脚本setPath&“idasen控件--server;blueutil--disconnect[address]“
。我还尝试了
执行shell脚本setPath&“idasen控件--server&blueutil--disconnect[address]“
但它也会无限期运行。它在等待某种响应吗?@nahero On'path':并不是说你必须用每个命令显式地设置你的路径。由于“do shell script”不知道“idasen control”的路径,因此必须在“idasen control”命令中显式包含完全限定的路径名。虽然您可能会猜测它的路径,但在终端中键入“哪个idasen控件”,它将返回路径。在脚本中这样写:
do shell script”/Users/username/.nvm/versions/node/v14.16.0/bin/idasen-control等……”
这适用于任何不在@user3439894列出的路径之一中的命令。@nahero无限期运行时:applescript解释您的命令并将其发送到shell,shell将添加自己的解释。那么,什么是“blueutil”?什么是“[地址]”?如果前者是applescript变量,则需要将其移到引号外,如:
“/path/idasen control--server”&blueutil&“--disconnect….”
注意引号内添加的空格。如果后者是地址,则可能需要[address]的引用形式。我无法在这里找到完整的URL,但请搜索苹果的“技术说明TN2065”以了解更多详细信息。
  /usr/bin:/bin:/usr/sbin:/sbin
source ~/.bash_profile
alias idasen-control='/Users/MYUSERNAME/.nvm/versions/node/v14.16.0/bin/idasen-control'