【问题标题】:~/zshrc: Permission denied~/zshrc: 权限被拒绝
【发布时间】:2020-04-14 03:57:44
【问题描述】:

我已经安装了 expo CLI 并尝试使用 expo init 来启动一个项目。当我这样做时,它会返回:

bash: expo: command not found

我看到这需要将.bash_profile 更新为export PATH=$PATH:~/node_modules

但是,显然 Mac OS Catalina 从 .bash_profile 切换到 zprofile 或 zshrc。在线建议说应该将PATH=$PATH:~/node_modules 添加到zshrc 的末尾。

我试过这样做,但它说文件被锁定。当我尝试编辑它时,会弹出:

您不拥有“zshrc”文件,也没有写入权限。

有什么想法可以解决这个问题吗?

附:我前一阵子安装了anaconda,看到.bash_profile有这个:

# added by Anaconda3 5.0.1 installer
export PATH="~/anaconda3/bin:$PATH"

# Setting PATH for Python 3.6

# The original version is saved in .bash_profile.pysave
PATH="~/Frameworks/Python.framework/Versions/3.6/bin:${PATH}"
export PATH

这可能是个问题?我用新路径更新了文件,但仍无法识别 expo。就在那时我发现 Catalina 切换到了 zprofile 和 zshrc。

我已经坚持了很长时间,并尝试了很多东西——任何建议都将不胜感激!

【问题讨论】:

  • 你试过npm install -g expo-cli吗?

标签: react-native expo zsh


【解决方案1】:

你没有使用 ZSH,如果你使用了,你会得到zsh: command not found: expo。您可以使用 chsh 切换到使用 zsh 或继续使用 Bash。

然后您应该通过运行sudo vim ~/.bash_profilesudo vim ~/.zshenv 将PATH 修改(导出PATH ...)添加到适当的shell 配置文件.bash_profilesudo vim ~/.zshenv,或者如果您有VSCode,它可能更容易sudo code ~/.zshrc

【讨论】:

  • 我不会说 macOS recommends zsh,至少没有明确表示。它只是使用zsh 作为新用户的默认登录shell。对PATH 等环境变量的修改也更适合.zprofile,它不是对每个交互式shell 都执行的。
  • 哦,是的,你是对的,谢谢! Apple 没有解释为什么将默认 shell 更改为 zsh。我之前已将所有内容添加到.zshrc,但在您发表评论和阅读后,看起来.zshenvPATH 的最佳位置。
  • 怀疑该更改是用其他一些用于/bin/sh 的shell 替换旧版本的bash 的第一步。顺便说一句,.zshenv 也是由非交互式 shell 提供的;它应该只用于总是必须运行的东西。同样,将.zprofile 用于将由子进程继承的环境变量。
  • 我猜这是因为当有人没有运行交互式 shell 时,您不想让 PATH 膨胀。但我真的不知道人们何时在 mac 上使用非交互式 shell。显然,从 emacs 运行 shell 命令会创建一个非交互式 shell。
  • PATH 被继承;你不需要在每个 shell 中显式设置它的值(这样做可能会导致它随着 shell 嵌套而增长,因为你总是在修改继承的值)。
猜你喜欢
  • 2021-01-25
  • 2015-08-30
  • 1970-01-01
  • 2018-07-19
  • 2018-02-05
  • 2015-04-28
  • 2018-02-03
相关资源
最近更新 更多