先上结论,修改环境变量建议以在
/etc/profile.d/中新增*.sh的方式修改。
1. 环境变量设置
环境变量的作用范围简单分为单用户设置和全部用户设置两类,以下进行简单介绍。
1.1 针对单用户设置环境变量
~/.pam_environment和~/.profile(需要 重新登录 才会生效)
~/.pam_environment
用于设置环境变量,一行设置一个环境变量。示例:
# 无法使用 $HOME 变量,此时还未赋值,详细见:/etc/security/pam_env.conf
FOO=bar
PATH DEFAULT=${PATH}:/home/@{PAM_USER}/MyPrograms
~/.pam_environment 一般被各类 GUI 用来设置语言和区域相关配置,通过图形化界面设置语言后,其中的值会被覆盖
~/.profile
在图形化界面或终端登录时,由 DisplayManager 执行。在 ~/.pam_environment 读取之后执行,可用于覆盖其中的值。示例:
export FOO=bar
export PATH="$PATH:$HOME/MyPrograms"
其他
/.bashrc*,*/.bash_profile,~/.bash_login
通常会建议在以上文件中添加环境变量,但是这些环境变量只有在 shell 中启动才会生效,在桌面图标等场景无效。
1.2 针对全部用户修改
/etc/environment和/etc/profile.d/*.sh
/etc/environment
一行设置一个环境变量,不可使用变量。
FOO=bar
# 变量不可用
# PATH=${PATH}:/bin
/etc/profile.d/*.sh
会话启动时,由 DisplayManager 加载。示例:
# /etc/profile.d/my_java_envvars.sh
export JAVA_HOME=/usr/lib/jvm/jdk1.7.0
export PATH=$PATH:$JAVA_HOME/bin
其他
/etc/profile 系统自带,修改之后升级可能会冲突,不建议在此修改,使用/etc/profile.d/*.sh替代,实际上,/etc/profile.d/*.sh由/etc/profile通过 source 命令加载。
/etc/default/locale 用 locate 环境变量设置,不建议修改。
/etc/bash.bashrc bash shell 执行时生效,桌面登录无效。
2. 查看环境变量
# 查看指定环境变量,如 PATH
echo $PATH
# 查看全部环境变量
env
更多信息请查阅 help.ubuntu.com
本文介绍了在Linux系统中如何为单用户及所有用户设置环境变量。包括使用~/.pam_environment和~/.profile为单用户设置环境变量的方法,以及通过/etc/environment和/etc/profile.d/*.sh为所有用户设置环境变量的步骤。
1627

被折叠的 条评论
为什么被折叠?



