成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何設置與查看Linux系統中的環境變量?

系統 Linux
在本文章中,我們了解了一些常見的環境變量和 Shell 變量,也學習了如何設置和查看這些變量,其實這些變量一直都在我們的 Shell 會話中,而且對許多程序都很有用,有很多常見的場景都會引用到這些變量。

[[337977]]

大家好,我是良許。

大家都知道,在 Linux 系統中,有環境變量和 Shell 變量這兩種變量。

環境變量是在程序及其子程序中全局可用的,常常用來儲存像默認的文本編輯器或者瀏覽器,以及可執行文件的路徑等等這樣的信息。而 Shell 變量僅在當前 Shell 中可用,可以用來存儲當前用戶的 ID 等信息。

那么什么是環境變量,什么是 Shell 變量,該如何設置和查看這兩種變量呢?

接下來,讓良許為你解答:

環境變量

環境變量是以鍵值對的形式實現的,是在整個系統范圍內都可用的變量,并由所有派生的子進程和 Shell 繼承。而環境變量的名稱是區分大小寫的,且通常以大寫的形式命名 ( MYVAR1, MYVAR2... )

單個值的環境變量看起來是這樣的:

  1. KEY=value1 

如果你想要將多個值賦予環境變量,則通常用冒號 ( : ) 作為分隔符。每一對鍵值對最終看起來是這樣子的:

  1. KEY=value1:value2:value3 

如果要賦予環境變量的值包含空格,則需要使用引號:

  1. KEY="value with spaces" 

Shell變量

Shell 變量是專門用于設置或定義它們的 Shell 中的變量。每個 Shell ,例如 zsh 和 bash ,都有一組自己內部的 Shell 變量。它們通常用于跟蹤臨時數據,比如當前工作目錄,而用法則與環境變量相同。

如果你想讓 Shell 變量作為全局變量使用,可以使用 export 指令:

  1. $ export MYVAR=lxlinux.net 
  2. $ echo $MYVAR 
  3. lxlinux.net 
  4. $ env | grep MYVAR 
  5. MYVAR=lxlinux.net 

常見的環境變量與 Shell 變量

一些環境變量和 Shell 變量是非常有用的,并且經常會被引用。以下是一些常見的,你以后可能會遇到的環境變量:

變量名 含義
TERM 這指定運行 Shell 時要模擬的終端類型。可以針對不同的操作需求模擬不同的硬件終端。不過,你通常不需要管這個變量。
USER 當前登錄的用戶
PWD 當前的工作目錄
OLDPWD 上一個工作目錄,這個變量由 Shell 保存,以便通過執行 cd - 切換回上一個工作目錄。
LS_COLORS 這定義了 ls 指令的顏色輸出代碼,用于向 ls 指令添加顏色輸出。這通常用于區分不同的文件類型并使用戶對文件類型等信息一目了然。
MAIL 當前用戶郵箱的路徑
PATH 系統在查找指令時會檢查的目錄列表。當用戶輸入一個指令時,系統將按此目錄列表的順序檢查目錄,以尋找相應的可執行文件。
LANG 當前的語言和本地化設置,包括字符編碼。
HOME 當前用戶的主目錄
_ 上一個被執行的指令

除了以上這些環境變量,你也可能會經常遇到以下這些 Shell 變量:

變量名 含義
BASHOPTS 執行 bash 時所啟用的選項列表,這對于確定 Shell 環境是否按照預期的方式運行很有幫助。
BASH_VERSION 人類可讀格式的正在執行的 bash 版本
BASH_VERSINFO 機器可讀格式的正在執行的 bash 版本
COLUMNS 用于設置繪制到屏幕上的輸出信息的寬的列數
DIRSTACK pushd  popd 命令可用的目錄堆棧。
HISTFILESIZE 存儲到文件中的命令歷史記錄的行數。默認為 ~/.bash_history 文件的行數。
HISTSIZE 內存中允許存儲的命令歷史記錄的行數,即 histroy 命令所能打印出來的行數。
HOSTNAME 計算機的主機名
IFS 內部字段分隔符,用于分隔命令行上的輸入。默認以空格作為分隔符。
PS1 定義主命令提示符。這用于定義啟動 Shell 會話時命令提示符的外觀。而 PS2 用于聲明跨越多行的命令的命令提示符。
SHELLOPTS 可以用 set 命令設置的 Shell 選項。
UID 當前用戶的 UID (用戶 ID)

查看 Shell 變量與環境變量

在 Linux 系統中,有以下幾種命令可以讓你查看環境變量:

env — 該命令可以讓你在自定義的環境中運行程序,并且不需要改變當前的環境。當不帶參數使用 env 命令時,它會打印出當前的環境變量列表。

printenv — 可以打印出所有的或者指定的環境變量。

set — 該命令可以設置或者刪除 Shell 變量。當不帶參數使用 set 命令時,它將打印出包括環境變量與 Shell 變量在內的所有變量以及 Shell 函數的列表。

默認狀態下,env 和 printenv 的功能是完全相同的:

  1. $ printenv  
  2. SSH_CONNECTION=10.0.2.2 37182 10.0.2.15 22 
  3. LESSCLOSE=/usr/bin/lesspipe %s %s 
  4. LANG=C.UTF-8 
  5. XDG_SESSION_ID=5 
  6. USER=alvin 
  7. MYVAR=lxlinux.net 
  8. PWD=/home/alvin 
  9. HOME=/home/alvin 
  10. SSH_CLIENT=10.0.2.2 37182 22 
  11. XDG_DATA_DIRS=/usr/local/share:/usr/share:/var/lib/snapd/desktop 
  12. SSH_TTY=/dev/pts/0 
  13. MAIL=/var/mail/alvin 
  14. TERM=xterm-256color 
  15. SHELL=/bin/bash 
  16. SHLVL=1 
  17. LOGNAME=alvin 
  18. XDG_RUNTIME_DIR=/run/user/1000 
  19. PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin 
  20. LESSOPEN=| /usr/bin/lesspipe %s 
  21. _=/usr/bin/printenv 

只有在更具體的功能上才能體現出 env 命令與 printenv 命令的區別。例如,使用 printenv命令,你可以請求單個變量的值:

  1. $ printenv SHELL 
  2. /bin/bash 
  3. $ printenv HOME 
  4. /home/alvin 
  5. $ printenv MYVAR 
  6. lxlinux.net 

env 命令可通過將一組變量傳遞給命令來修改程序運行的環境:

  1. env MYVAR=lxlinux.net command_to_run command_options 

printenv 與 env 命令只能打印出環境變量,而如果你想打印出所有變量或者 Shell 函數的列表,你可以使用 set 指令。

  1. set 
  2. BASH=/bin/bash 
  3. BASHOPTS=checkwinsize:cmdhist:complete_fullquote:expand_aliases:extglob:extquote:force_fignore:histappend:interactive_comments:login_shell:progcomp:promptvars:sourcepath 
  4. BASH_ALIASES=() 
  5. BASH_ARGC=() 
  6. BASH_ARGV=() 
  7. BASH_CMDS=() 
  8. BASH_COMPLETION_VERSINFO=([0]="2" [1]="8"
  9. BASH_LINENO=() 
  10. BASH_SOURCE=() 
  11. BASH_VERSINFO=([0]="4" [1]="4" [2]="20" [3]="1" [4]="release" [5]="x86_64-pc-linux-gnu"
  12. BASH_VERSION='4.4.20(1)-release' 
  13. COLUMNS=140 
  14. DIRSTACK=() 
  15. EUID=1000 
  16. GROUPS=() 
  17. HISTCONTROL=ignoreboth 
  18. HISTFILE=/home/alvin/.bash_history 
  19. HISTFILESIZE=2000 
  20. HISTSIZE=1000 
  21. HOME=/home/alvin 
  22. HOSTNAME=ubuntu-bionic 
  23. HOSTTYPE=x86_64 
  24. IFS=$' \t\n' 
  25. LANG=C.UTF-8 
  26. LESSCLOSE='/usr/bin/lesspipe %s %s' 
  27. LESSOPEN='| /usr/bin/lesspipe %s' 
  28. LINES=35 
  29. LOGNAME=alvin 
  30. ..... 

該命令將顯示一個包含所有變量的大列表,因此你可能會希望將輸出傳遞給 less 命令。

  1. set | less 

設置 Shell 變量與環境變量

Linux 系統中可以設置環境變量的命令有以下幾種:

set — 該命令可以設置或者取消設置 Shell 變量。當不帶參數使用 set 命令時,它將打印出包括環境變量與 Shell 變量在內的所有變量以及 Shell 函數的列表。

unset — 該命令可以刪除 Shell 變量以及環境變量。

export — 該命令可以設置環境變量。

為了更好地理解 Shell 變量和環境變量之間的區別,我們先從設置 Shell 變量開始講,然后再講環境變量。

先從在當前會話中定義一個 Shell 變量開始:

  1. $ MYVAR=lxlinux 

你可以用 echo $MYVAR 來驗證變量是否已設置:

  1. $ echo $MYVAR 
  2. lxlinux 

使用 printenv 命令檢驗該變量是否為環境變量:

  1. $ printenv MYVAR 

沒有輸出返回,這就意味著 MYVAR 變量并不是環境變量。

export 命令可以用來設置環境變量。要創建環境變量,只需用 export 命令將 Shell 變量導出為環境變量:

  1. $ export MYVAR 

你可以用以下語句檢驗:

  1. $ printenv MYVAR 
  2. lxlinux 

當然,你也可以只用一行代碼來設置環境變量:

  1. $ export MYNEWVAR="My New Variable" 

但是以這種方式創建的環境變量只能用于當前會話,如果你打開一個新的 Shell 會話,或者退出登陸,所有的變量都將會丟失。

我們也可以將環境變量還原為 Shell 變量,或者將其完全刪除:

MYVAR 變量被定義為環境變量,我們可以通過輸入以下代碼將其還原為 Shell 變量:

  1. $ export -n MYVAR 

這樣,MYVAR 變量就不再是環境變量了,但依然還是 Shell 變量。

無論是 Shell 變量還是環境變量,想要完全刪除變量,都可以使用 unset 命令來刪除:

  1. $ unset MYVAR 

可以通過以下語句來驗證 MYVAR 變量已經刪除:

  1. $ echo $MYVAR 

由于變量已經刪除了,所以沒有任何返回。

環境變量的持久化

許多程序都需要使用環境變量來決定具體的執行方式,但是,我們并不希望每次啟動新的 Shell 會話時都必須重新設置重要的變量,因此我們需要將重要的環境變量寫入配置文件中。

Shell 會話有不同的啟動方式,比如,連接到終端的交互式 Shell 與未連接到終端的非交互式 Shell,還有登錄式 Shell 與非登錄式 Shell, 而 bash Shell 會根據會話不同的啟動方式而讀取不同的配置文件。

但是,在大多數 Linux 發行版中,當你啟動一個新的 Shell 會話時,一般都會從以下文件中讀取環境變量:

/etc/environment — 使用此文件來設置系統范圍內可用的環境變量。

/etc/profile — 每當 bash 登錄 Shell 時,都會加載此文件中設置的變量。

~/.bashrc — 每個用戶特定的 Shell 配置文件。例如, 如果你使用的是Bash,就可以在其中聲明變量。

如果要將新的環境變量加載到當前的 Shell 會話中,可以使用source命令:

  1. $ source ~/.bashrc 

如果你想要設置環境變量,你就可以考慮將其添加到 /etc/profile 、/etc/bash.bashrc 或/etc/environment 文件中。

結論

 

在本文章中,我們了解了一些常見的環境變量和 Shell 變量,也學習了如何設置和查看這些變量,其實這些變量一直都在我們的 Shell 會話中,而且對許多程序都很有用,有很多常見的場景都會引用到這些變量。希望這對你的工作也有幫助。如果你還對這兩種變量有任何疑問,請留言告訴我唄!

本文轉載自微信公眾號「良許Linux」,可以通過以下二維碼關注。轉載本文請聯系良許Linux公眾號。

 

責任編輯:武曉燕 來源: 良許Linux
相關推薦

2022-10-14 13:33:35

2011-06-14 09:21:55

Linux Qt 環境變量

2010-03-26 12:50:02

CentOS系統

2010-04-27 18:30:42

AIX系統

2011-08-22 15:06:19

linux環境變量

2009-10-21 12:58:18

2019-09-09 09:02:04

Linux腳本語言文本編輯器

2021-06-18 08:43:20

環境變量Linux

2020-08-05 09:48:20

Docker容器工具

2010-06-07 11:33:11

Linux查看環境變量

2019-05-30 10:20:10

Linux環境變量命令

2009-06-15 16:28:30

JAVA環境變量

2011-05-31 13:41:50

Android 環境變量

2010-05-27 17:17:29

Linux查看環境變量

2009-12-25 09:44:59

redhatPATH設置環境變量

2021-03-04 23:11:59

環境變量Python

2009-07-03 16:13:10

JSP環境變量

2021-02-15 15:52:27

Linux環境變量命令

2009-07-07 12:48:29

JDK環境變量設置

2009-11-03 08:53:42

LinuxWindows環境變量
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日本精a在线观看 | 亚州综合一区 | 久久精品国产亚洲一区二区三区 | 91视频网址 | 午夜电影网站 | 成人免费观看男女羞羞视频 | 丝袜一区二区三区 | 国产精品久久久久久久久图文区 | 91精品免费视频 | 国产午夜精品一区二区三区嫩草 | 91极品视频| www国产精品 | 九九免费在线视频 | 久久国产精99精产国高潮 | 成人在线视 | 久久免费视频观看 | 亚洲国产精品久久久久 | 久久av一区二区三区 | 国产在线视频一区二区 | 欧美国产亚洲一区二区 | 欧洲亚洲精品久久久久 | 99久久国产综合精品麻豆 | 日韩在线免费播放 | ww 255hh 在线观看 | 亚洲欧美日韩一区二区 | 99精品欧美一区二区三区 | 黄色网址av| 成人网在线观看 | 在线91| 成人一区二区三区在线 | 黄色片免费看视频 | 中文日韩在线视频 | 日韩欧美国产电影 | 国产精品无码久久久久 | 国产精品国产三级国产aⅴ原创 | 中文字幕第100页 | 精彩视频一区二区三区 | 91精品国产综合久久久动漫日韩 | 91精品国产综合久久久久 | 日韩高清成人 | 成人精品在线视频 |