得到了'#34;许可被拒绝"在zsh下模拟sh时

时间:2014-07-07 01:04:18

标签: macos bash zsh .bash-profile

我刚刚切换到zsh作为我的默认Mac OS终端shell。但是,我发现它不会自动点击~/.profile文件。在Google上进行研究后,看起来可以通过在~/.zprofile中添加以下命令来模拟~/.profile中的任何内容:

emulate sh -c '~/.profile'

但是,终端启动时我遇到了以下错误:

  

zsh:1:权限被拒绝:/Users/XXX/.profile

知道为什么会这样吗?

2 个答案:

答案 0 :(得分:2)

听起来你应该使用.zshrc

将此添加到~/.zshrc

EXPORT JAVA_HOME="whatever"

在终端窗口中键入$ source ~/.zshrc,或者启动一个新的shell实例。

跟进: this article列出启动文件加载顺序,以澄清混淆。

答案 1 :(得分:1)

要实现目标,您必须使用:

emulate sh -c 'source ~/.profile'  # Note the `source`; alternatively, use `.`

如果没有source~/.profile会在子shell 中运行,这会使您失去意图(export s不会"粘贴& #34); 您必须来源其他文件 (您看到的具体错误源于尝试直接执行~/.profile ,而不会将其标记为可执行。请注意,shell配置文件通常不需要执行,因为它们的唯一目的将由shell自动读取。但是,如果需要从shell中获取 sourcing ,那么这是一个没有实际意义的点。)

关于将命令放入的zsh初始化文件:

  • 在OS X上,如果您已经 zsh 默认 shell ,则 ~/.zprofile正常,因为您在终端中打开的所有shell都将 登录zsh)shell ,这将读取该文件。
  • 但一般情况下, ~/.zshrc是更好的选择,因为该文件来自任何交互式zsh shell,无论是&#39 ; sa登录shell与否。它还用于Oh My Zsh框架的文件。