1.使用命令echo顯示環(huán)境變量
創(chuàng)新互聯(lián)建站-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比樂安網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式樂安網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋樂安地區(qū)。費(fèi)用合理售后完善,十余年實(shí)體公司更值得信賴。
本例使用echo顯示常見的變量HOME
$ echo $HOME
/home/kevin
2.設(shè)置一個(gè)新的環(huán)境變量
$ export MYNAME=”my name is kevin”
$ echo $ MYNAME
my name is Kevin
3.修改已存在的環(huán)境變量
接上個(gè)示例
$ MYNAME=”change name to jack”
$ echo $MYNAME
change name to jack
4.使用env命令顯示所有的環(huán)境變量
$ env
HOSTNAME=localhost.localdomain
SHELL=/bin/bash
TERM=xterm
HISTSIZE=1000
SSH_CLIENT=192.168.136.151 1740 22
QTDIR=/usr/lib/qt-3.1
SSH_TTY=/dev/pts/0
……
5.使用set命令顯示所有本地定義的Shell變量
$ set
BASH=/bin/bash
BASH_ENV=/root/.bashrc
……
6.使用unset命令來清除環(huán)境變量
$ export TEMP_KEVIN=”kevin” #增加一個(gè)環(huán)境變量TEMP_KEVIN
$ env | grep TEMP_KEVIN #查看環(huán)境變量TEMP_KEVIN是否生效(存在即生效)
TEMP_KEVIN=kevin #證明環(huán)境變量TEMP_KEVIN已經(jīng)存在
$ unset TEMP_KEVIN #刪除環(huán)境變量TEMP_KEVIN
$ env | grep TEMP_KEVIN #查看環(huán)境變量TEMP_KEVIN是否被刪除,沒有輸出顯示,證明TEMP_KEVIN被清除了。
7.使用readonly命令設(shè)置只讀變量
注:如果使用了readonly命令的話,變量就不可以被修改或清除了。
$ export TEMP_KEVIN ="kevin" #增加一個(gè)環(huán)境變量TEMP_KEVIN
$ readonly TEMP_KEVIN #將環(huán)境變量TEMP_KEVIN設(shè)為只讀
$ env | grep TEMP_KEVIN #查看環(huán)境變量TEMP_KEVIN是否生效
TEMP_KEVIN=kevin #證明環(huán)境變量TEMP_KEVIN已經(jīng)存在
$ unset TEMP_KEVIN #會(huì)提示此變量只讀不能被刪除
-bash: unset: TEMP_KEVIN: cannot unset: readonly variable
$ TEMP_KEVIN ="tom" #修改變量值為tom會(huì)提示此變量只讀不能被修改
-bash: TEMP_KEVIN: readonly variable
8.通過修改環(huán)境變量定義文件來修改環(huán)境變量。
需要注意的是,一般情況下,僅修改普通用戶環(huán)境變量配置文件,避免修改根用戶的環(huán)境定義文件,因?yàn)槟菢涌赡軙?huì)造成潛在的危險(xiǎn)。
$ cd ~ #到用戶根目錄下
$ ls -a #查看所有文件,包含隱藏的文件
$ vi .bash_profile #修改用戶環(huán)境變量文件
例如:
編輯你的PATH聲明,其格式為:
PATH=$PATH:PATH 1:PATH 2:PATH 3:------:PATH N
你可以自己加上指定的路徑,中間用冒號(hào)隔開。
環(huán)境變量更改后,在用戶下次登陸時(shí)生效。
如果想立刻生效,則可執(zhí)行下面的語句:$source .bash_profile
需要注意的是,最好不要把當(dāng)前路徑”./”放到PATH里,這樣可能會(huì)受到意想不到的攻擊。
完成后,可以通過$ echo $PATH查看當(dāng)前的搜索路徑。這樣定制后,就可以避免頻繁的啟動(dòng)位于shell搜索的路徑之外的程序了。
Shell變量有局部變量、環(huán)境變量之分。局部變量就是指在某個(gè)Shell中生效的變量,只在此次登錄中有效。環(huán)境變量通常又稱“全局變量”,雖然在Shell中變量默認(rèn)就是全局的,但是為了讓子Shall繼承當(dāng)前Shell的變量,需要使用export內(nèi)建命令將其導(dǎo)出為環(huán)境變量。
按變量的生存周期劃分:
永久的:需要修改配置文件,變量永久生效。
臨時(shí)的:使用export命令聲明即可,變量在關(guān)閉shell時(shí)失效。
在配置永久的環(huán)境變量時(shí),又可以按照作用范圍分為:
用戶環(huán)境變量
系統(tǒng)環(huán)境變量。
系統(tǒng)環(huán)境變量對(duì)所有系統(tǒng)用戶都有效,用戶環(huán)境變量?jī)H僅對(duì)當(dāng)前的用戶有效。
全局(公有)配置,不管是哪個(gè)用戶,登錄時(shí)都會(huì)讀取該文件。
它也是全局(公有)的 bash執(zhí)行時(shí),不管是何種方式,都會(huì)讀取此文件。
不要輕易修改此文件
用戶環(huán)境變量通常被存儲(chǔ)在下面的文件中:
若bash是以login方式執(zhí)行時(shí),讀取 ~/.bash_profile ,若它不存在,則讀取 ~/.bash_login ,若前兩者不存在,讀取 ~/.profile 。
若bash是以login方式執(zhí)行時(shí),讀取 ~/.bash_profile ,若它不存,則讀取 ~/.bash_login ,若前兩者不存在,讀取 ~/.profile 。
只有bash是以login形式執(zhí)行時(shí),才會(huì)讀取.bash_profile,Unbutu默認(rèn)沒有此文件,可新建。 通常該配置文件還會(huì)配置成去讀取 ~/.bashrc 。
當(dāng)bash是以non-login形式執(zhí)行時(shí),讀取此文件。若是以login形式執(zhí)行,則不會(huì)讀取此文件。
~/.bash_profile 是交互式、login 方式進(jìn)入 bash 運(yùn)行的
~/.bashrc 是交互式 non-login 方式進(jìn)入 bash 運(yùn)行的通常二者設(shè)置大致相同,所以通常前者會(huì)調(diào)用后者。
如想將一個(gè)路徑加入到環(huán)境變量(例如$PATH)中,可以像下面這樣做(修改/etc/profile):
你可以自己加上指定的路徑,中間用冒號(hào)隔開。環(huán)境變量更改后,在用戶下次登陸時(shí)生效,如果想立刻生效,則可執(zhí)行下面的語句:
bash會(huì)在用戶登錄時(shí),讀取下列四個(gè)環(huán)境配置文件:
全局環(huán)境變量設(shè)置文件: /etc/profile 、 /etc/bashrc 。 用戶環(huán)境變量設(shè)置文件: ~/.bash_profile 、 ~/.bashrc 。
讀取順序:① /etc/profile 、② ~/.bash_profile 、③ ~/.bashrc 、④ /etc/bashrc 。
2 .bashrc 和 .bash_profile 的區(qū)別
.bash_profile 會(huì)用在登陸shell, .bashrc 使用在交互式非登陸 shell 。簡(jiǎn)單說來,它們的區(qū)別主要是 .bash_profile 是在你每次登錄的時(shí)候執(zhí)行的; .bashrc 是在你新開了一個(gè)命令行窗口時(shí)執(zhí)行的。
當(dāng)通過控制臺(tái)進(jìn)行登錄(輸入用戶名和密碼):在初始化命令行提示符的時(shí)候會(huì)執(zhí)行.bash_profile 來配置你的shell環(huán)境。但是如果已經(jīng)登錄到機(jī)器,在Gnome或者是KDE也開了一個(gè)新的終端窗口(xterm),這時(shí),.bashrc會(huì)在窗口命令行提示符出現(xiàn)前被執(zhí)行。當(dāng)你在終端敲入/bin/bash時(shí).bashrc也會(huì)在這個(gè)新的bash實(shí)例啟動(dòng)的時(shí)候執(zhí)行。
所以對(duì)于我自己,我寫了一個(gè) .pathrc 文件
然后在 .bashrc , .zshrc , .bash_profile , /etc/profile 中都加了
下面是 .pathrc 文件
現(xiàn)在,當(dāng)你從控制臺(tái)登錄機(jī)器的時(shí)候,.bashrc就會(huì)被執(zhí)行。
四、常用的環(huán)境變量
BASH Bash Shell的全路徑
CDPATH 用于快速進(jìn)入某個(gè)目錄。
PATH 決定了shell將到哪些目錄中尋找命令或程序
HOME 當(dāng)前用戶主目錄
HISTSIZE 歷史記錄數(shù)
LOGNAME 當(dāng)前用戶的登錄名
HOSTNAME 指主機(jī)的名稱
SHELL 當(dāng)前用戶Shell類型
LANGUGE 語言相關(guān)的環(huán)境變量,多語言可以修改此環(huán)境變量
MAIL 當(dāng)前用戶的郵件存放目錄
PS1 基本提示符,對(duì)于root用戶是#,對(duì)于普通用戶是$
Reference
[1] /etc/profile、/etc/bashrc、 /.bash_profile、 /.bashrc
[2] Linux如何修改env看到的環(huán)境變量? .bashrc和.bash_profile區(qū)別
[3] linux環(huán)境變量,bashrc與bashprofile
很多朋友都想知道linux怎么添加環(huán)境變量?
linux添加環(huán)境變量
1、打開linux系統(tǒng),在linux的桌面的空白處右擊。
2、在彈出的下拉選項(xiàng)里,點(diǎn)擊打開終端。
3、在終端窗口中輸入export命令,進(jìn)入以后就可以進(jìn)行添加環(huán)境變量了。
/etc/profile和/etc/bashrc都是系統(tǒng)級(jí)別的,修改后可以在所有用戶中起作用; /.bash_profile、 /.bashrc和~/.bash_logout都是用戶級(jí)別的,修改后只會(huì)作用于當(dāng)前用戶。
帶profile的文件都是需要重新進(jìn)入用戶時(shí)才會(huì)生效,帶bashrc的則是打開新的shell時(shí)生效;
執(zhí)行順序:/etc/profile - (~/.bash_profile | ~/.bash_login | ~/.profile) - ~/.bashrc - /etc/bashrc - ~/.bash_logout
$ echo $HOME
$ export HELLO="Hello"
$ env
¥ set
readonly TEST
之前介紹的使用 export 命令設(shè)置環(huán)境變量是在命令行中直接執(zhí)行,這樣設(shè)置的環(huán)境變量在退出shell時(shí)就會(huì)失效。要想設(shè)置永久有效的環(huán)境變量就需要修改之前提到的文件。
PATH=$PATH:PATH 1:PATH 2:PATH 3:------:PATH N
你可以自己加上指定的路徑,中間用冒號(hào)隔開
需要注意的是,最好不要把當(dāng)前路徑”./”放到PATH里,這樣可能會(huì)受到意想不到的攻擊。
特點(diǎn):所有用戶;永久有效;生效需要重新進(jìn)入用戶
root權(quán)限:
要想修改完文件后就立即生效,可以在命令行中執(zhí)行:
# source /etc/profile
Source命令也稱為“點(diǎn)命令”,也就是一個(gè)點(diǎn)符號(hào)(.)。source命令通常用于重新執(zhí)行剛修改的初始化文件,使之立即生效,而不必注銷并重新登錄
1、系統(tǒng)位置,/etc目錄下的bashrc、profile、environment三個(gè)文件
2、用戶目錄(root或普通用戶)下的.bashrc、.bash_profile兩個(gè)文件,注意這兩個(gè)文件前面都有點(diǎn),是隱藏文件。
按變量的周期劃為永久變量和臨時(shí)性變量2種:
永久變量:通過修改配置文件,配置之后變量永久生效。
臨時(shí)性變量:使用命令如export等命令設(shè)置,設(shè)置之后馬上生效。當(dāng)關(guān)閉shell的時(shí)候失效(這種主要用于測(cè)試比較多)。
按照影響范圍分為用戶變量和系統(tǒng)變量2種:
用戶變量(局部變量):修改的設(shè)置只對(duì)某個(gè)用戶的路徑或執(zhí)行起作用;
系統(tǒng)變量(全局變量):影響范圍是整個(gè)系統(tǒng)。
export命令顯示當(dāng)前系統(tǒng)定義的所有環(huán)境變量,運(yùn)行返回結(jié)果如下:
echo $PATH命令輸出當(dāng)前的PATH環(huán)境變量的值,運(yùn)行返回結(jié)果如下:
直接用export命令修改PATH值 (重啟終端后配置失效)
export PATH=$PATH:/home/sphc/software/bin
該文件為當(dāng)前用戶配置文件,修改后,作用于當(dāng)前用戶的環(huán)境變量。
該文件為當(dāng)前用戶配置文件,修改后,作用于當(dāng)前用戶的環(huán)境變量。
/etc/bashrc為系統(tǒng)環(huán)境配置文件,需要管理員權(quán)限(如root)或者對(duì)該文件的寫入權(quán)限,修改后,作用于所有用戶。
/etc/profile為系統(tǒng)全局配置文件,需要管理員權(quán)限或者對(duì)該文件的寫入權(quán)限,修改后,作用于系統(tǒng)下所有用戶的環(huán)境變量。
/etc/environment為系統(tǒng)環(huán)境配置文件,需要管理員權(quán)限或者對(duì)該文件的寫入權(quán)限,修改后,作用于系統(tǒng)下所有用戶的環(huán)境變量。
linxu下的set命令是用來設(shè)置各種shell選項(xiàng)或者列出shell變量。下面由我為大家整理了linux的set命令的詳細(xì)解釋的相關(guān)知識(shí),希望對(duì)大家有幫助!
一、Linux中的set命令的詳細(xì)解釋
功能說明:設(shè)置shell。
語法:set [+-abCdefhHklmnpPtuvx]
補(bǔ)充說明:用set 命令可以設(shè)置各種shell選項(xiàng)或者列 出shell變量.單個(gè)選項(xiàng)設(shè)置常用的特性.在某些選項(xiàng)之后-o參數(shù)將特殊特性打開.在某些選項(xiàng)之后使用+o參數(shù)將關(guān)閉某些特性,不帶任何參數(shù)的set命 令將顯示shell的全部變量.除非遇到非法的選項(xiàng),否則set總是返回ture.
參數(shù):
allexport -a 從設(shè)置開始標(biāo)記所有新的和修改過的用于輸出的變量
braceexpand -B 允許符號(hào)擴(kuò)展,默認(rèn)選項(xiàng)
emacs 在進(jìn)行命令編輯的時(shí)候,使用內(nèi)建的emacs編輯器, 默認(rèn)選項(xiàng)
errexit -e 如果一個(gè)命令返回一個(gè)非0退出狀態(tài)值(失敗),就退出.
histexpand -H 在做臨時(shí)替換的時(shí)候允許使用!和!! 默認(rèn)選項(xiàng)
history 允許命令行歷史,默認(rèn)選項(xiàng)
ignoreeof 禁止coontrol-D的方式退出shell,必須輸入exit。
interactive-comments 在交互式模式下, #用來表示注解
keyword -k 為命令把關(guān)鍵字參數(shù)放在環(huán)境中
monitor -m 允許作業(yè)控制
noclobber -C 保護(hù)文件在使用重新動(dòng)向的時(shí)候不被覆蓋
noexec -n 在腳本狀態(tài)下讀取命令但是不執(zhí)行,主要為了檢查語法結(jié)構(gòu)。
noglob -d 禁止路徑名擴(kuò)展,即關(guān)閉通配符
notify -b 在后臺(tái)作業(yè)以后通知客戶
nounset -u 在擴(kuò)展一個(gè)沒有的設(shè)置的變量的時(shí)候, 顯示錯(cuò)誤的信息
onecmd -t 在讀取并執(zhí)行一個(gè)新的命令后退出
physical -P 如果被設(shè)置,則在使用pwd和cd命令時(shí)不使用符號(hào)連接的路徑 而是物理路徑
posix 改變shell行為以便符合POSIX要求
privileged 一旦被設(shè)置,shell不再讀取.profile文件和env文件 shell函數(shù)也不繼承任何環(huán)境
verbose -v 為調(diào)試打開verbose模式
vi 在命令行編輯的時(shí)候使用內(nèi)置的vi編輯器
xtrace -x 打開調(diào)試回響模式
二、Linux中的set命令詳解實(shí)例
顯示環(huán)境變量
# set
BASH=/bin/bash
BASH_ARGC=()
BASH_ARGV=()
BASH_LINENO=()
BASH_SOURCE=()
BASH_VERSINFO=([0]="3" [1]="00" [2]="15" [3]="1" [4]="release" [5]="i386-redhat-linux-gnu")
BASH_VERSION='3.00.15(1)-release'
COLORS=/etc/DIR_COLORS.xterm
COLUMNS=99
DIRSTACK=()
EUID=0
GROUPS=()
G_BROKEN_FILENAMES=1
HISTFILE=/root/.bash_history
HISTFILESIZE=1000
HISTSIZE=1000
HOME=/root
HOSTNAME=hnlinux
HOSTTYPE=i386
IFS=$' '
INPUTRC=/etc/inputrc
KDEDIR=/usr
LANG=zh_CN.GB2312
LESSOPEN='|/usr/bin/lesspipe.sh %s'
LINES=34
L
MAIL=/var/spool/mail/root
MAILCHECK=60
OLDPWD=/home/uptech
OPTERR=1
OPTIND=1
OSTYPE=linux-gnu
PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin:/opt/crosstools/gcc-3.4.6-glibc-2.3.6/bin
PIPESTATUS=([0]="2")
PPID=26005
PROMPT_COMMAND='echo -ne "
三、Linux的set命令的相關(guān)擴(kuò)展
set、env、export——Linux中的環(huán)境變量命令
Linux是一個(gè)多用戶的操作系統(tǒng)。每個(gè)用戶登錄系統(tǒng)后,都會(huì)有一個(gè)專用的運(yùn)行環(huán)境。通常每個(gè)用戶默認(rèn)的環(huán)境都是相同的,這個(gè)默認(rèn)環(huán)境實(shí)際上就是一組環(huán)境 變量的定義。用戶可以對(duì)自己的運(yùn)行環(huán)境進(jìn)行定制,其方法就是修改相應(yīng)的系統(tǒng)環(huán)境變量。
什么是環(huán)境變量
環(huán)境變量是一個(gè)具有 特定名字的對(duì)象,它包含了一個(gè)或者多個(gè)應(yīng)用程序所將使用到的信息。許多用戶(特別是那些剛接觸Linux的新手)發(fā)現(xiàn)這些變量有些怪異或者難以控制。其 實(shí),這是個(gè)誤會(huì):通過使用環(huán)境變量,你可以很容易的修改一個(gè)牽涉到一個(gè)或多個(gè)應(yīng)用程序的配置信息。
常見的環(huán)境變量
對(duì)于 PATH和HOME等環(huán)境變量大家都不陌生。
PATH能夠指定命令的搜索路徑,那么動(dòng)態(tài)鏈接庫的路徑用什么變量指定呢?或者就是在 PATH里面?
比如有一個(gè)程序需要/usr/local/lib下面的一個(gè)庫文件,應(yīng)該怎么指定其路徑呢?
經(jīng)常看到有些變量如 LD_LIBRARY_PATH,LIBPATH,CLASSPATH等,他們之間有什么不同和關(guān)系?
除此之外,還有下面一些常見環(huán)境變 量。
◆ HISTSIZE是指保存歷史命令記錄的條數(shù)。
◆ LOGNAME是指當(dāng)前用戶的登錄名。
◆ HOSTNAME是指主機(jī)的名稱,許多應(yīng)用程序如果要用到主機(jī)名的話,通常是從這個(gè)環(huán)境變量中來取得的。
◆ SHELL是指當(dāng)前用戶用的是哪種Shell。
◆ LANG/LANGUGE是和語言相關(guān)的環(huán)境變量,使用多種語言的用戶可以修改此環(huán)境變量。
◆ MAIL是指當(dāng)前用戶的郵件存放目錄。
◆ PS1是基本提示符,對(duì)于root用戶是#,對(duì)于普通用戶是$。PS2是附屬提示符,默認(rèn)是“”。可以通過修改此環(huán)境變量來修改當(dāng)前的命令符,比 如下列命令會(huì)將提示符修改成字符串“Hello,My NewPrompt ”。