Rod*_*aki 24 zsh environment-variables
我正在zsh
用作我的 shell,我正在尝试配置我的环境。
我通常$JAVA_HOME
通过创建一个文件来定义我的变量:
/etc/profile.d/java.sh
Run Code Online (Sandbox Code Playgroud)
有以下内容
export JAVA_HOME=/path/to/jdk
export PATH=$JAVA_HOME/bin:$PATH
Run Code Online (Sandbox Code Playgroud)
然后我注销并重新登录,一切正常,但由于某种原因PATH
未设置变量。它可以识别JAVA_HOME
,但不能识别新的PATH
,请参阅此终端代码段:
~ echo $JAVA_HOME
/usr/lib/jvm/jdk1.8.0_05
~ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
Run Code Online (Sandbox Code Playgroud)
我通过尝试从 jvm 运行命令来确认它
~ java -version
zsh: command not found: java
Run Code Online (Sandbox Code Playgroud)
在PATH
不包括$JAVA_HOME
因为它应该。还有什么我应该检查的吗?
我已经检查过,如果我运行:
source /etc/profile.d/java.sh
Run Code Online (Sandbox Code Playgroud)
它全部运行正确,我的变量设置为它们应该的,但脚本不应该/etc/profile.d
自动运行吗?
Rad*_*anu 30
从我的角度来看,最好的方法是在~/.zshrc
文件中添加以下几行(如果您还没有,请创建它):
if [ -d "/path/to/jdk" ] ; then
export PATH="/path/to/jdk/bin:$PATH"
fi
Run Code Online (Sandbox Code Playgroud)
然后重新启动您的zsh
,或者只是运行source ~/.zshrc
,然后您的 PATH 应该完全符合您的意愿。
或者,如果您想在系统范围内进行更改,请将之前的代码添加到/etc/zsh/zshenv
文件末尾。
但无论如何不要使用/etc/profile.d
在zsh
. 此目录仅对bash
shell有用,而zsh
不像您的情况。要理解这一点,请打开/etc/profile
文件,它是一个bash初始化文件,绝不是zsh初始化文件,您将在文件末尾的某处看到:
if [ -d /etc/profile.d ]; then
for i in /etc/profile.d/*.sh; do
if [ -r $i ]; then
. $i
fi
done
unset i
fi
Run Code Online (Sandbox Code Playgroud)
所以,从你的脚本/etc/profile.d
目录会自动运行zsh
只有当您在zsh的初始化文件添加前面的代码,像/etc/zsh/zprofile
例如,或源/etc/profile
的/etc/zsh/zprofile
文件。
归档时间: |
|
查看次数: |
118667 次 |
最近记录: |