/bin/sh:TexturePacker:未找到命令(zsh 可以工作)macOS Monterey

/bin/sh:TexturePacker:未找到命令(zsh 可以工作)macOS Monterey

我有一个小型 Adob​​e Animate 扩展,它使用 TexturePacker 将精灵打包到精灵表上。我已成功将 TexturePacker 添加到 $PATH (/Applications/TexturePacker.app/Contents/MacOS),因此它可以从终端 (zsh) 运行。有没有办法让它在我使用 /bin/sh 的扩展中运行?
/bin/sh 错误图像

最初 $PATH 如下所示:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
.zshrc:export PATH=$PATH:/Applications/TexturePacker.app/Contents/MacOS
.profile、.bashrc 和 .bash_profile 都包含与 .zshrc 相同的导出。

答案1

壳类型的潜在诊断: 请检查您的设置System Preferences > Users & Groups > Login Options > Network Account Server: Join... > Open Directory Utility... > Directory Editor > [yourAccountUserNameHere] > UserShell

也许是/bin/sh而不是/bin/zsh/bin/bash。也许 Adob​​e Animate 等应用程序正在使用此 shell 而不是您在登录后交互使用的 zsh 或 bash。也许 PATH 仅在 zsh 和 bash 中设置正确,但在 sh 中设置不正确,因为 sh 是登录时默认调用的 shell。

相关纠正措施: 作为一般规则(实际上与我上面怀疑的通过 /bin/sh 登录的潜在情况无关),PATH 应始终在 .profile 中完整设置和导出,而不是通过在每个子 shell 中附加来逐步导出,这样,在几个子 shell 深度中,您不会最终导致,例如,PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/TexturePacker.app/Contents/MacOS:/Applications/TexturePacker.app/Contents/MacOS:/Applications/TexturePacker.app/Contents/MacOS由于同一目录出现多次而无谓地增加 PATH 的搜索时间。相反,应该在 .zshrc、.kshrc、.cshrc 和/或 .bashrc 中完成的事情是不会从父调用 shell 继承的事情,例如别名、使用每个 shell 的不可移植/非 POSIX 语法的上下文相关命令行提示符以获得附加功能、该 shell 的 setopt 选项、键绑定等。

总结:将您的 PATH 分配完全放入,~/.profile而不是在~/.*rc文件中附加 PATH。

相关内容