我刚刚切换到zsh
作为我的默认Mac OS终端shell。但是,我发现它不会自动点击~/.profile
文件。在Google上进行研究后,看起来可以通过在~/.zprofile
中添加以下命令来模拟~/.profile
中的任何内容:
emulate sh -c '~/.profile'
但是,终端启动时我遇到了以下错误:
zsh:1:权限被拒绝:/Users/XXX/.profile
知道为什么会这样吗?
答案 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
初始化文件:
zsh
默认 shell ,则 ~/.zprofile
正常,因为您在终端中打开的所有shell都将 登录(zsh
)shell ,这将读取该文件。~/.zshrc
是更好的选择,因为该文件来自任何交互式zsh
shell,无论是&#39 ; sa登录shell与否。它还用于Oh My Zsh框架的文件。