Linux上设置永久环境变量(Set Environment Variables permanently in Linux)

好久没有在Linux上设置环境变量了,印象中的bashrc还是profile文件都混淆了。

谷哥度娘上搜了搜,一大把。贴到这里,我也稍微整理整理思路。

根据牛人的解释,想要设置永久的环境变量,需要先考虑你目前用的是哪种shell

  1. 登录/非登录 shell
    • 登录shell:需要用户名、密码登录后才能进入的shell(或者通过”–login”选项生成的shell);退出时可用exit和logout命令。
    • 非登录shell:不需要输入用户名和密码即可打开的Shell,例如:直接命令“bash”就是打开一个新的非登录shell,在Gnome或KDE中打开一个“终端”(terminal)窗口程序也是一个非登录shell。退出时只能用exit命令。
  2. 交互式/非交互式 shell
    • 交互式Shell:在终端上执行,shell等待你的输入,并且立即执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、退出。当你退出后,shell也终止了。
    • 非交互式Shell:以shell script(非交互)方式执行。在这种模式 下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾EOF,shell也就终止了。

                   可以通过打印“$-”变量的值(代表着当前shell的选项标志),查看其中的“i”选项(表示interactive shell)来区分交互式与非交互式shell。

                   echo $-  (在终端直接输入)         --->  himBH

                        ./test.sh ("echo $-"在test.sh里)  --->  hB


使用登录的shell (交互和非交互):

  • 首先读取和执行/etc/profile全局配置文件。
  • 然后依次查找~/.bash_profile~/.bash_login~/.profile这三个配置文件,并读取查找到的第一个环境变量。(除非被“–noprofile”选项禁止了)

做了个实验:

打开一个登录的shell,创建了.bash_profile和.bash_login.

-bash-4.2$ cat .bash_profile
export GRADLE_HOME=/home/nnn/gradle-1.12
export PATH=${GRADLE_HOME}/bin:${PATH}

-bash-4.2$ cat .bash_login
export GRADLE_HOME=/home/mmm/gradle-1.12
export PATH=${GRADLE_HOME}/binmmm:${PATH}

新打开一个shell,查看环境变量,以.bash_profile为准。

-bash-4.2$ echo $GRADLE_HOME
/home/nnn/gradle-1.12
-bash-4.2$ echo $PATH
/home/nnn/gradle-1.12/bin:/usr/lib64/qt-3.3/bin:/bin:/usr/bin

删掉.bash_profile,再重打开shell,查看环境变量,以.bash_login为准。

-bash-4.2$ echo $GRADLE_HOME
/home/mmm/gradle-1.12
-bash-4.2$ echo $PATH
/home/mmm/gradle-1.12/binmmm:/usr/lib64/qt-3.3/bin:/bin:/usr/bin

 


使用非登录交互shell

  • 大部分读取 ~/.bashrc 文件
  • 不同的发行版里面可能有所不同:如RHEL6.3中非登录shell仅执行了“~/.bashrc”文件,而KUbuntu10.04中却依次执行了/etc/bash.bashrc 和 ~/.bashrc 文件。

使用非登录非交互shell

  • 只读取$BASH_ENV里特定的配置

 

另:当然shell也不仅限于bash,还有更多其他的shell可使用,如zsh,csh,ksh,csh等,可参考牛人的解答

Bash:

vi ~/.profile
export GRADLE_HOME=/home/user/gradle-1.12

 csh or tcsh:

vi ~/.login
setenvGRADLE_HOME /home/user/gradle-1.12
posted @ 2018-11-19 15:07  遗忘的大脑  阅读(1503)  评论(0编辑  收藏  举报