乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      如何設置與查看Linux系統(tǒng)中的環(huán)境變量?

       泰榮林黑皮 2020-09-13

      作者丨良許 

      來源丨良許Linux(ID:liangxuxiansheng)

      大家好,我是良許。

      大家都知道,在 Linux 系統(tǒng)中,有環(huán)境變量Shell 變量這兩種變量。

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

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

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


      環(huán)境變量

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

      單個值的環(huán)境變量看起來是這樣的:

      KEY=value1

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

      KEY=value1:value2:value3

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

      KEY='value with spaces'



      Shell變量

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

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

      $ export MYVAR=lxlinux.net$ echo $MYVARlxlinux.net$ env | grep MYVARMYVAR=lxlinux.net



      常見的環(huán)境變量與 Shell 變量


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

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

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

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



      查看 Shell 變量與環(huán)境變量


      在 Linux 系統(tǒng)中,有以下幾種命令可以讓你查看環(huán)境變量:

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

      printenv — 可以打印出所有的或者指定的環(huán)境變量。

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

      默認狀態(tài)下,envprintenv 的功能是完全相同的:

      $ printenv SSH_CONNECTION=10.0.2.2 37182 10.0.2.15 22LESSCLOSE=/usr/bin/lesspipe %s %sLANG=C.UTF-8XDG_SESSION_ID=5USER=alvinMYVAR=lxlinux.netPWD=/home/alvinHOME=/home/alvinSSH_CLIENT=10.0.2.2 37182 22XDG_DATA_DIRS=/usr/local/share:/usr/share:/var/lib/snapd/desktopSSH_TTY=/dev/pts/0MAIL=/var/mail/alvinTERM=xterm-256colorSHELL=/bin/bashSHLVL=1LOGNAME=alvinXDG_RUNTIME_DIR=/run/user/1000PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/binLESSOPEN=| /usr/bin/lesspipe %s_=/usr/bin/printenv

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

      $ printenv SHELL/bin/bash$ printenv HOME/home/alvin$ printenv MYVARlxlinux.net

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

      env MYVAR=lxlinux.net command_to_run command_options

      printenvenv 命令只能打印出環(huán)境變量,而如果你想打印出所有變量或者 Shell 函數的列表,你可以使用 set 指令。

      $ setBASH=/bin/bashBASHOPTS=checkwinsize:cmdhist:complete_fullquote:expand_aliases:extglob:extquote:force_fignore:histappend:interactive_comments:login_shell:progcomp:promptvars:sourcepathBASH_ALIASES=()BASH_ARGC=()BASH_ARGV=()BASH_CMDS=()BASH_COMPLETION_VERSINFO=([0]='2' [1]='8')BASH_LINENO=()BASH_SOURCE=()BASH_VERSINFO=([0]='4' [1]='4' [2]='20' [3]='1' [4]='release' [5]='x86_64-pc-linux-gnu')BASH_VERSION='4.4.20(1)-release'COLUMNS=140DIRSTACK=()EUID=1000GROUPS=()HISTCONTROL=ignorebothHISTFILE=/home/alvin/.bash_historyHISTFILESIZE=2000HISTSIZE=1000HOME=/home/alvinHOSTNAME=ubuntu-bionicHOSTTYPE=x86_64IFS=$' \t\n'LANG=C.UTF-8LESSCLOSE='/usr/bin/lesspipe %s %s'LESSOPEN='| /usr/bin/lesspipe %s'LINES=35LOGNAME=alvin.....

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

      $ set | less



      設置 Shell 變量與環(huán)境變量


      Linux 系統(tǒng)中可以設置環(huán)境變量的命令有以下幾種:

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

      unset — 該命令可以刪除 Shell 變量以及環(huán)境變量。

      export — 該命令可以設置環(huán)境變量。

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

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

      $ MYVAR=lxlinux

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

      $ echo $MYVARlxlinux

      使用 printenv 命令檢驗該變量是否為環(huán)境變量:

      $ printenv MYVAR

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

      export 命令可以用來設置環(huán)境變量。要創(chuàng)建環(huán)境變量,只需用 export 命令將 Shell 變量導出為環(huán)境變量:

      $ export MYVAR

      你可以用以下語句檢驗:

      $ printenv MYVARlxlinux

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

      $ export MYNEWVAR='My New Variable'

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

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

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

      $ export -n MYVAR

      這樣,MYVAR 變量就不再是環(huán)境變量了,但依然還是 Shell 變量。

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

      $ unset MYVAR

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

      $ echo $MYVAR

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



      環(huán)境變量的持久化


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

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

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

      /etc/environment — 使用此文件來設置系統(tǒng)范圍內可用的環(huán)境變量。

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

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

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

      $ source ~/.bashrc

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

        本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發(fā)現有害或侵權內容,請點擊一鍵舉報。
        轉藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多