无法打开输入文件:zsh

5

我正在尝试在MacOS Big Sur上执行一个.zsh脚本,但它不让我执行。

每当我在终端运行.zsh时,它都会显示“/bin/zsh:无法打开输入文件:file-name.zsh”

我之前已经进行了brew install zsh的操作,所以我有点困惑。

任何帮助将不胜感激。谢谢!


“ls -ltr”的输出是什么?你使用的是哪个命令来运行它? - Kaus2b
2个回答

4
在 macOS 中,透明度同意和控制 (TCC) 限制对“个人”数据的访问,包括用户桌面文件夹中的任何内容,并且如果您尝试违反此规则,则会输出 /bin/zsh: can't open input file 错误消息。尝试将文件名.zsh 移动到其他文件夹,如果将文件名.zsh 移动到另一个文件夹无法解决问题,请使用完整路径引用文件名.zsh。

谢谢您提到这个问题!我想我可能遇到了您提到的macOS TCC策略。我有一个文件夹位于~/Downloads文件夹中,我正在尝试从其中运行脚本,但不知何故出现了这个错误。还有其他什么我可以做的吗?将其移动到另一个文件夹中似乎在我的情况下并没有帮助 :/ 谢谢! - user3064009
1
在我的情况下,当我使用完整路径而不是通过 cd "$(dirname "$0")" 导航到脚本目录时,它可以工作。我猜这暂时是一个解决方法,但并不理想,因为我不能将我的脚本移动到另一个位置。如果有其他可能的解决方案,请告诉我。 - user3064009
在Mac上找到了ZSH的解决方法!为了让脚本从任何相对目录运行,您只需将路径的其余部分附加到脚本名称的前面: BASEDIR=$(dirname“$0”); echo“脚本位置:$ {BASEDIR}”; cd $(dirname“$0”); $ BASEDIR / <script_name> .command; 由于这可能有助于其他人,我也会将其作为单独的答案发布。 - user3064009

1
在Mac上为ZSH解决了!为了让脚本能够从任何相对目录运行,你可以先将余下的路径附加到脚本名字前面,然后像往常一样运行它:
BASEDIR=$(dirname "$0")
echo "Script location: ${BASEDIR}"
cd "$(dirname "$0")"

$BASEDIR/<script_name>.command

这在我的 macOS Monterey 上目前可以正常工作。

(从评论中复制 Karel 的关于 macOS ZSH + TCC 策略的回答)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接