配置文件正确使用姿势
通常,我们在做环境配置时一般都是将变量信息直接写到 /etc/profile 或 ~/.profile 文件中。比如环境变量、alias 命令等。
但其实你发现,如果配置特别多的话(如有上百个配置),就会变得很难整理了。一个 profile 文件既有 alias 配置又有 export 配置,总有种感觉很乱的错觉。
正确的做法是将不同的命令配置到不同的文件中,之后由 profile 文件统一加载。如 alias 相关的命令统一放到 bash_alias.sh 文件中,export 变量相关的配置统一放到 bash_env.sh 文件中
比如在做用户级别的配置时,我一般都是在用户目录下创建一个 .profile.d 目录:
$ mkdir ~/.profile.d
在该目录下统一做环境配置,在该目录下创建多个 .sh 文件,每个文件只配置自己的信息,这样分工就很明确。如:
$ ls ~/.profile.d
bash_alias.sh # 用于配置 alias 命令
bash_env.sh # 用于配置 export 命令
之后由 profile 配置文件统一加载,在 profile 结尾处加上下面这段脚本就好了:
# 加载 ~/.profile.d 目录下所有以 .sh 结尾的配置文件
if [ -d ~/.profile.d ]; then
for i in ~/.profile.d/*.sh; do
if [ -r $i ]; then
. $i
fi
done
unset i
fi
| Note |
|---|
这里说的 profile 只是配置文件的统称,每个人使用的 shell 不同,配置文件也会有所不同。若你使用的是 zsh 那么配置文件应该是 .zsh。若你使用的是 bash,那么配置文件应该是 .bashrc。 |
这样我就可以在对应的 sh 文件中做环境配置了,示例如下:
$ cat ~/.profile.d/bash_env.sh
# JDK
export JAVA_HOME=/usr/local/openjdk/jdk8
export PATH=$PATH:$JAVA_HOME/bin
# Other...
感觉是不是清晰多了~
--
对于配置系统级别的命令就简单很多了,直接将配置写到 /etc/profile.d/*.sh 文件即可。因为在 /etc/profile 文件中也有一段加载 /etc/profile.d/*.sh 脚本的命令。具体可以看下 /etc/profile 文件内容~