首頁 > 運維 > linux運維 > 主體

Linux環境變數配置的6種方法,建議收藏!

WBOY
發布: 2022-01-06 17:27:32
轉載
3433 人瀏覽過

這篇文章為大家帶來了六種關於linux中環境變數配置的方法,希望對大家有幫助。

Linux環境變數配置的6種方法,建議收藏!

Linux環境變數設定

在自訂安裝軟體的時候,常常需要設定環境變數,以下列舉出各種對環境變數的配置方法。

下面所有範例的環境說明如下:

系統:Ubuntu 14.0

使用者名稱:uusama

需要設定MySQL環境變數路徑:/home/ uusama/mysql/bin

Linux讀取環境變數

讀取環境變數的方法:

  • export指令顯示目前系統定義的所有環境變數

  • echo $PATH指令輸出目前的PATH環境變數的值

這兩個指令執行的效果如下

uusama@ubuntu:~export
declare -x HOME="/home/uusama"
declare -x LANG="en_US.UTF-8"
declare -x LANGUAGE="en_US:"
declare -x LESSCLOSE="/usr/bin/lesspipe %s %s"
declare -x LESSOPEN="| /usr/bin/lesspipe %s"
declare -x LOGNAME="uusama"
declare -x MAIL="/var/mail/uusama"
declare -x PATH="/home/uusama/bin:/home/uusama/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
declare -x SSH_TTY="/dev/pts/0"
declare -x TERM="xterm"
declare -x USER="uusama"
uusama@ubuntu:~ echo $PATH
/home/uusama/bin:/home/uusama/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
登入後複製

其中PATH變數定義了執行指令的查找路徑,以冒號:分割不同的路徑,使用export定義的時候可加雙引號也可不加。

Linux環境變數設定方法一:export PATH

#使用export指令直接修改PATH的值,設定MySQL進入環境變數的方法:

export PATH=/home/uusama/mysql/bin:PATH
# 或者把PATH放在前面
export PATH=PATH:/home/uusama/mysql/bin
登入後複製

注意事項:

生效時間:立即生效

生效期限:目前終端有效,視窗關閉後無效

生效範圍:僅對目前使用者有效

配置的環境變數中不要忘了加上原來的配置,也就是$PATH部分,避免覆寫原來配置

Linux環境變數配置方法二: vim ~/.bashrc

透過修改使用者目錄下的~/.bashrc檔案進行設定:

vim ~/.bashrc
# 在最后一行加上
export PATH=$PATH:/home/uusama/mysql/bin
登入後複製

注意事項:

生效時間:使用相同的使用者開啟新的終端時生效,或手動source ~/.bashrc生效

生效期限:永久有效

生效範圍:僅對目前使用者有效

如果有後續的環境變數載入檔案覆寫了PATH定義,可能不會生效

Linux環境變數設定方法三:vim ~/.bash_profile

#和修改~/.bashrc檔案類似,也是要在檔案最後加上新的路徑即可:

vim ~/.bash_profile
# 在最后一行加上
export PATH=$PATH:/home/uusama/mysql/bin
登入後複製

注意事項:

生效時間:使用相同的使用者開啟新的終端時生效,或手動source /.bash_profile生效

#生效期限:永久有效

生效範圍:僅對目前使用者有效

#如果沒有/.bash_profile文件,則可以編輯~/.profile文件或者新建一個

Linux環境變量配置方法四:vim /etc/bashrc

該方法是修改系統配置,需要管理員權限(如root)或對該文件的寫入權限:

# 如果/etc/bashrc文件不可编辑,需要修改为可编辑
chmod -v u+w /etc/bashrc
vim /etc/bashrc
# 在最后一行加上
export PATH=$PATH:/home/uusama/mysql/bin
登入後複製

注意事項:

生效時間:新開終端機生效,或手動source /etc /bashrc生效

生效期限:永久有效

生效範圍:對所有使用者有效

Linux環境變數設定方法五:vim /etc/ profile

此方法修改系統配置,需要管理員權限或對該檔案的寫入權限,和vim /etc/bashrc類似:

# 如果/etc/profile文件不可编辑,需要修改为可编辑
chmod -v u+w /etc/profile
vim /etc/profile
# 在最后一行加上
export PATH=$PATH:/home/uusama/mysql/bin
登入後複製

注意事項:

生效時間:新開終端機生效,或手動source /etc/profile生效

# 生效期限:永久有效

生效範圍:對所有使用者有效

Linux環境變數設定方法六:vim /etc/environment

該方法是修改系統環境設定文件,需要管理員權限或對該文件的寫入權限:

# 如果/etc/bashrc文件不可编辑,需要修改为可编辑
chmod -v u+w /etc/environment
vim /etc/profile
# 在最后一行加上
export PATH=$PATH:/home/uusama/mysql/bin注意事项:
登入後複製

生效時間:新開終端機生效,或手動source /etc/environment生效

#生效期限:永久有效

生效範圍:對所有用戶有效

Linux環境變數載入原理解析

#上面列出了環境變數的各種配置方法,那麼Linux是如何載入這些配置的呢?是以什麼樣的順序載入的呢?

特定的載入順序會導致相同名稱的環境變數定義被覆寫或不生效。

環境變數的分類

環境變數可以簡單的分成使用者自訂的環境變數以及系統層級的環境變數。

使用者層級環境變數定義檔:/.bashrc、/.profile(部分系統為:/.bash_profile)

系統層級環境變數定義檔:/etc/bashrc、/etc/ profile(部分系統為:/etc/bash_profile)、/etc/environment

另外在使用者環境變數中,系統會先讀取/.bash_profile(或~/.profile)文件,若沒有該文件則讀取~/.bash_login,根據這些檔案中內容再去讀取~/.bashrc。

測試Linux環境變數載入順序的方法

#

为了测试各个不同文件的环境变量加载顺序,我们在每个环境变量定义文件中的第一行都定义相同的环境变量UU_ORDER,该变量的值为本身的值连接上当前文件名称。

需要修改的文件如下:

  • /etc/environment

  • /etc/profile

  • /etc/profile.d/test.sh,新建文件,没有文件夹可略过

  • /etc/bashrc,或者/etc/bash.bashrc

  • /.bash_profile,或者/.profile

  • ~/.bashrc

在每个文件中的第一行都加上下面这句代码,并相应的把冒号后的内容修改为当前文件的绝对文件名。

export UU_ORDER="$UU_ORDER:~/.bash_profile"
登入後複製

修改完之后保存,新开一个窗口,然后echo $UU_ORDER观察变量的值:

uusama@ubuntu:~echoUU_ORDER
$UU_ORDER:/etc/environment:/etc/profile:/etc/bash.bashrc:/etc/profile.d/test.sh:~/.profile:~/.bashrc
登入後複製

可以推测出Linux加载环境变量的顺序如下:

/etc/environment

/etc/profile

/etc/bash.bashrc

/etc/profile.d/test.sh

~/.profile

~/.bashrc

Linux环境变量文件加载详解

由上面的测试可容易得出Linux加载环境变量的顺序如下,:

系统环境变量 -> 用户自定义环境变量 /etc/environment -> /etc/profile -> ~/.profile

打开/etc/profile文件你会发现,该文件的代码中会加载/etc/bash.bashrc文件,然后检查/etc/profile.d/目录下的.sh文件并加载。

# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
if [ "PS1" ]; then
  if [ "BASH" ] && [ "BASH" != "/bin/sh" ]; then
    # The file bash.bashrc already sets the default PS1.
    # PS1='\h:\w\$ '
    if [ -f /etc/bash.bashrc ]; then
      . /etc/bash.bashrc
    fi
  else
    if [ "`id -u`" -eq 0 ]; then
      PS1='# '
    else
      PS1=' '
    fi
  fi
fi
if [ -d /etc/profile.d ]; then
  for i in /etc/profile.d/*.sh; do
    if [ -r i ]; then
      .i
    fi
  done
  unset i
fi
登入後複製

其次再打开~/.profile文件,会发现该文件中加载了~/.bashrc文件。

# if running bash
if [ -n "BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "HOME/.bashrc" ]; then
    . "HOME/.bashrc"
    fi
fi
# set PATH so it includes user's private bin directories
PATH="HOME/bin:HOME/.local/bin:PATH"
登入後複製

从~/.profile文件中代码不难发现,/.profile文件只在用户登录的时候读取一次,而/.bashrc会在每次运行Shell脚本的时候读取一次。

一些小技巧

可以自定义一个环境变量文件,比如在某个项目下定义uusama.profile,在这个文件中使用export定义一系列变量,然后在~/.profile文件后面加上:sourc uusama.profile,这样你每次登陆都可以在Shell脚本中使用自己定义的一系列变量。

也可以使用alias命令定义一些命令的别名,比如alias rm="rm -i"(双引号必须),并把这个代码加入到~/.profile中,这样你每次使用rm命令的时候,都相当于使用rm -i命令,非常方便。

相关推荐:《Linux视频教程

以上是Linux環境變數配置的6種方法,建議收藏!的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:juejin.im
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!