新聞中心
在Linux系統(tǒng)中,環(huán)境變量是非常重要的。它們可以設置系統(tǒng)參數(shù)、控制程序行為等等,而且在Linux下,環(huán)境變量是通過export命令來設置的。然而,在Linux環(huán)境變量的使用過程中,我們經(jīng)常會遇到環(huán)境變量重復的問題,如何解決這個問題呢?本文將介紹Linux環(huán)境變量重復的原因及解決方法,幫助大家避免這個問題。

創(chuàng)新互聯(lián)建站主要從事成都網(wǎng)站制作、成都網(wǎng)站設計、網(wǎng)頁設計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務。立足成都服務長沙縣,10年網(wǎng)站建設經(jīng)驗,價格優(yōu)惠、服務專業(yè),歡迎來電咨詢建站服務:18982081108
一、為什么會出現(xiàn)環(huán)境變量重復?
在Linux系統(tǒng)中,環(huán)境變量有很多種設置方法。例如,在.bashrc或.profile等文件中設置環(huán)境變量;或者通過export命令設置環(huán)境變量。在這些設置中,如果不小心重復設置了相同的環(huán)境變量,就會導致環(huán)境變量重復。此外,在使用腳本或程序時,也有可能會因為環(huán)境變量重復的問題而出現(xiàn)錯誤。
二、如何避免環(huán)境變量重復?
為了避免環(huán)境變量重復的問題,我們需要學習以下幾個技巧:
(1)清理系統(tǒng)中已經(jīng)設置的環(huán)境變量
在系統(tǒng)中清理環(huán)境變量可以大大降低出現(xiàn)重復的概率,因為你清理空了之前的環(huán)境變量,就不會存在了??梢允褂胾nset命令來清理環(huán)境變量。例如,如果要清除$JAVA_HOME環(huán)境變量,可以運行以下命令:
unset JAVA_HOME
(2)將環(huán)境變量設置到特定的腳本或程序中
我們可以將環(huán)境變量設置到特定的腳本或程序中,而不是將它們放在全局環(huán)境中。這樣做的好處是,環(huán)境變量只會對該腳本或程序有效,不會對其他腳本或程序造成影響。
(3)使用標準路徑
如果使用標準路徑,就不必擔心文件路徑與別名的沖突。例如,安裝軟件時可以選擇使用默認的路徑,而不是將軟件安裝到非標準路徑。
三、如何解決環(huán)境變量重復?
即使我們已經(jīng)嘗試了上述方法,還是可能會遇到環(huán)境變量重復的問題。在這種情況下,我們可以采取以下措施:
(1)使用echo命令查看環(huán)境變量
在命令行下,我們可以使用echo命令來查看環(huán)境變量的值。例如,如果想查看JAVA_HOME環(huán)境變量的值,可以運行以下命令:
echo $JAVA_HOME
這樣就可以確定是否存在重復的環(huán)境變量。
(2)刪除不必要的環(huán)境變量
如果遇到重復的環(huán)境變量,我們可以先刪除不必要的環(huán)境變量。可以使用unset命令刪除環(huán)境變量。例如,如果要刪除$JAVA_HOME環(huán)境變量,可以運行以下命令:
unset JAVA_HOME
(3)重復的環(huán)境變量
如果有兩個相同的環(huán)境變量,可以使用alias命令為它們設置別名。例如,如果有兩個JAVA_HOME環(huán)境變量,可以使用以下命令為它們設置別名:
alias java_home2=’export JAVA_HOME=/usr/lib/java2′
這樣就可以將其中一個環(huán)境變量重命名為java_home2,避免出現(xiàn)沖突。
(4)優(yōu)先使用環(huán)境變量
如果有兩個命令重名,可以使用which命令查看命令的路徑。例如,如果要查看ls命令的路徑,可以輸入:
which ls
這樣就可以確定哪個路徑中的ls命令會被執(zhí)行。如果要優(yōu)先使用某個路徑中的ls命令,可以通過設置PATH環(huán)境變量來實現(xiàn)。
Linux環(huán)境變量的設置和使用非常重要,避免和解決環(huán)境變量重復問題需要掌握一些技巧。在使用Linux時,我們應該盡可能地避免出現(xiàn)環(huán)境變量重復的問題,同時,也需要及時處理出現(xiàn)的問題,確保系統(tǒng)的正常運行。
相關問題拓展閱讀:
- linux系統(tǒng)下環(huán)境變量的問題
- Linux環(huán)境變量定義問題
- LINUX環(huán)境變量問題?。?!
linux系統(tǒng)下環(huán)境變量的問題
你需要把這些變量放到.bashrc或者bash_profile等,Linux一般有好幾個放環(huán)境變量的文件,按照級別不同在調用時不一含鏈樣。
還有,如果你只是打開終端然后執(zhí)行 export ***********,那么只會在這個終端,這次使用有效,下次使用就會談圓孫被一個也是腔顫類似于.bashrc這樣的文件執(zhí)行,取消掉這個環(huán)境變量,所以就不好使了。
試試看把這個lib放到這個環(huán)境變慶升量中LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/usr/local/bin/va_demo_1.15/usr/local/lib
至于沒有.bash_profile的話,可以手廳差拆動自己創(chuàng)建的
默認的bash腳扮棗本放在/etc/profile中
Linux環(huán)境變量定義問題
一.暫時使用
亦即重啟拿棚或旅敏叢注銷后就失效了。
使用 PATH=$PATH:目錄:目錄… 直接賦值。如export PATH=$PATH:/in。
二.長期使用
在全拆櫻局文件 /etc/profile 中或用戶自定義文件 ~/.bash_profile 中添加上述命令即可!
八 環(huán)境變量
8.1 查看環(huán)境變量
$ env? 顯示所有的環(huán)境變量設置
$ echo $ENV_VARIABLE ? 顯示指定環(huán)境變量的設置
例:
$ echo $PATH
/bin:/etc:/usr/bin:/tcb/bin
8.2 設定環(huán)境變量
$ ENV_VARIABLE=XXX;export ENV_VARIABLE
例:
$ PATH=$PATH:$INFORMIXDIR/bin;export PATH ? 將環(huán)境變量PATH設定為原PATH值+$INFORMIXDIR/bin
8.3 取消環(huán)境變量設置
$ unset $ENV_VARIABLE
例:
$ set GZJ=gzj;export GZJ ? 設置環(huán)境變量GZJ
$ echo $GZJ
gzj? 顯示環(huán)境變量值
$ unset $GZJ ? 取消環(huán)境變量GZJ的設置
$ echo $GZJ
? 已取消
一 makefile規(guī)則
makefile是一個make的規(guī)則描述腳本文件,包括四種類型行:目標行、命令行、宏定義行和make偽指令行(如“include”)。makefile文件中注釋以“#”開頭。當一行寫不下時,可以用續(xù)行符“\”轉入下一行。
1.1 目標行
目標行告訴make建立什么。它由一個目標名表后面跟冒號“:”,再跟一個依賴性表組成。
例:
example: depfile deptarget
該目標行指出目標example與depfile和deptarget有依賴關系,如果depfile或deptarget有修改,則重新生成目標。
example1 example2 example3: deptarget1 deptarget2 depfile
該目標行指出目標名表中的example1、example2、example3這三個各自獨立的目標是用相同的依賴列表和規(guī)則生成的。
clean:
空的依賴列表說明目標clean沒有其他依賴關系。
目標行鏈讓后續(xù)的以Tab 開始的行是指出目標的生成規(guī)則,該Tab字符不能以空格代替。例如:
example.o:example.c example.h
cc –c example.c
該例子指出棚亂局目標example.o依賴于example.c和example.h。如果example.c或example.h其中之一改變了,就需要執(zhí)行命令cc –c example.c重新生成目標example.o。
可以用文件名模式匹配來自動為目標生成依賴表,如:
prog: *.c
以下是一個簡單的makefile的例子:
圖 1 最簡單的makefile例
make使用makefile文件時,從之一個目標開始掃描。上例中的之一個目標為all,所以目標clean不會自動被執(zhí)行,可以通過命令make clean來生成目標。
1.2 命令行
命令行用來定義生成目標的動作。
在目標行中分號“;”后面的文件都認為是一個命令,或者一行以Tab制表符開始的也是命令。
如在上面的makefile例中,第三行以Tab字符開始的cc命令即是一個命令行,說明要生成hello應執(zhí)行的命令。也可以寫成:hello:hello.o;cc –陪拍c hello –L…
一般情況下,命令行的命令會在標準輸出中回顯出來,如對上面的makefile執(zhí)行make時,標準輸出如下:
cc -c hello.c
cc -o hello -L/usr/X11R6/lib -L/usr/lib -lXm -lXt -lX11 hello.o
cc -c hello1.c
cc -o hello1 -L/usr/X11R6/lib -L/usr/lib -lXm -lXt -lX11 hello1.o
如果不希望命令本身回顯,可在命令前加@字符,如在上例中不希望回顯cc –c hello.c和cc –c hello1.c,可修改makefile文件如下:
圖 2 抑制回顯的makefile例
對該makefile文件執(zhí)行make時,標準輸出如下:
cc -o hello -L/usr/X11R6/lib -L/usr/lib -lXm -lXt -lX11 hello.o
cc -o hello1 -L/usr/X11R6/lib -L/usr/lib -lXm -lXt -lX11 hello1.o
可以看出,命令行前有@字符的不回顯。
1.3 宏定義行
在makefile中,可以使用宏定義減少用戶的輸入,例如上例中對hello和hello1的編譯選項均為“-L/usr/X11R6/lib -L/usr/lib -lXm -lXt -lX11”,此時可以用宏來代替,如:
圖 3 使用宏定義的makefile例
宏定義的基本語法是:
name=value
在定義宏時,次序不重要。宏不需要在使用前定義。如果一個宏定義多次,則使用最后一次的定義值。
可以使用“$”字符和“()”或“{}”來引用宏,例如:
cc –o hello.o $(CCFLAGS) hello.o
也可以將一個宏賦值給另一個宏,但這樣的定義不能循環(huán)嵌套,如:
A=value1
B=value2
C=$(A) $(B)等價于C=value1 value2
1.4 偽指令
makefile大部分由宏定義行、命令行和目標行組成。第四種類型是make偽指令行。make偽指令沒有標準化,不同的make可能支持不同的偽指令集,使得makefile有一定的不兼容性。如果要考慮移植性問題,則要避免使用make偽指令。但有一些偽指令,如include,由于使用比較多,很多不同make都提供該偽指令。
1.4.1 偽指令include
該偽指令類似C語言中的#include,它允許一次編寫常用的定義并包括它。include偽指令必須在一行中,之一個元素必須是include,并且跟一個要包含的文件名,如:
include default.mk
1.4.2 偽指令“#”
“#”字符也是make的偽指令,它指出“#”后面的文件是注釋,如:
PROGNAME=test # define macro
#don’t modify this
二 后綴規(guī)則
2.1 雙后綴規(guī)則
在前面的makefile例中有許多重復內(nèi)容,例如,生成hello和hello1的命令類似,生成hello.o和hello1.o的命令也類似,除了編譯或鏈接的文件不一樣外,其它均相同,這時,我們就可以使用后綴規(guī)則。首先看一個雙后綴的例子:
圖 4 使用雙后綴規(guī)則的makefile例
后綴規(guī)則使用特殊的目標名“.SUFFIXES”。
之一行中.SUFFIXES的依賴表為空,用來清除原有的后綴規(guī)則,因為.SUFFIXES可以在makefile中多次使用,每一次都將新的后綴規(guī)則加入以前的后綴規(guī)則中。
第二行中指定后綴規(guī)則為“.c .o”,即表示將所有的.c文件轉換為.o文件。
第三行指定將.c文件轉換成.o文件的方法。$(CC)為make的預定義宏,其默認值為cc,$
第六行指定目標hello和hello1的生成方法。$@為特殊的宏,代替當前的目標名,即hello和hello1,$@.o即為hello.o和hello1.o。
上例介紹的是雙后綴規(guī)則,即它包含兩個后綴,如.c.o,用來把一個C源文件編譯為目標文件。雙后綴規(guī)則描述如何由之一個后綴類型的文件生成第二個后綴類型的文件,例如:.c.o規(guī)則描述如何由.c文件生成.o文件。
2.2 單后綴規(guī)則
單后綴規(guī)則描述了怎樣由指定后綴的文件生成由它基名為名字的文件。例如使用單后綴規(guī)則.c,可以由hello.c和hello1.c生成hello和hello1文件。例如將前面的makefile改為:
圖 5 使用單后綴規(guī)則的makefile例
由于.c后綴規(guī)則為make標準后綴規(guī)則,make為其指定了相應的命令行,所以在makefile中可以不用再指定其目標生成的具體命令行。
下表是make提供的標準后綴規(guī)則。
表 1 make標準后綴規(guī)則
后綴規(guī)則 命令行
.c $(LINK.c) –o $@ $
.c.ln $(LINK.c) $(POUTPUT OPTPUT OPTION) –i $
.c.o $(COMPILE.c) $(OUTPUT OPTION) $
.c.a $(COMPILE.c) –o $% $
$(AR) $(ARFLAGS) $@ $%
$(RM) $%
三 特殊目標
在后綴規(guī)則中使用了特殊目標.SUFFIXES,用來指定新增的后綴規(guī)則。make還提供了幾個特殊目標來設置make的行為,下面為一些特殊的目標:
? .IGNORE
make在執(zhí)行命令行時,如果返回的是錯誤碼,make的缺省動作是停止并退出。增加該目標后,make將忽略命令行返回的錯誤碼,并繼續(xù)執(zhí)行后續(xù)的操作。
? .SILENT
前面已經(jīng)介紹過,make在執(zhí)行命令行時會回顯命令行內(nèi)容,在命令行前增加“@”字符將抑制該命令行的回顯。
如果增加該目標,所有的命令行不再回顯,相當于在每個命令行前均增加了“@”字符。
? .PRECIOUS
當收到一個信號或從shell命令返回非零的錯誤碼時,make刪除它所有已建立的文件。但有些文件即使出了錯誤,用戶也不想讓make刪除,這些文件可以作為.PRECIOUS目標的參數(shù)。它可以在一個makefile中出現(xiàn)多次,每一次都累積文件列表。
? .SUFFIXES
它為makefile指定新的后綴規(guī)則,新的后綴規(guī)則作為.SUFFIXES的依賴表給出。.SUFFIXES可以在一個makefile中多次使用,每一次都將新的后綴規(guī)則加入以前的后綴規(guī)則中,如果.SUFFIXES的依賴表為空,則設置后綴規(guī)則表為空。
四 特殊的宏
為簡單使用規(guī)則,make提供了幾個特殊的宏:
? $@
整個當前目標名的值可以由宏“$@”來代替。
? $
當前的源文件由“$
? $*
當前目標的基名由宏“$*”來代替。例如目標的名字是hello.o,則基名就是除去了后綴.o的hello。
以上介紹的特殊宏使用了make自身的規(guī)則,用戶不可以改變。下表介紹了C中預定義的宏。
用途 宏 默認值
庫文檔匯編命令 AR ar
ARFLAGS rv
AS as
ASFLAGS
COMPILE.s $(AS) $(ASFLAGS) $(TARGET ARCH)
C編譯器命令 CC cc
CFLAGS
CPPFLAGS
COMPILE.c $(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET ARCH) –c
LINK.c $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET ARCH)
鏈接編輯器命令 LD ld
LDFLAGS
rm命令 RM rm
后綴列表 SUFFIXES .o .c .c~ .s .s~ .S .S~ .ln .f .f~ .F .F~ .l .mod .mod~ .sym
.def .def~ .p .p~ .r .r~ .y .y~ .h .h~ .sh .sh~ .cps .cps~
五 makefile的應用
當調用make時,它在當前目錄下搜索文件名是“makefile”或“Makefile”的文件,并執(zhí)行。
如果不想使用上述缺省文件,可以使用命令行中的“-f”來指定文件,如將編寫的makefile命名為mklib,則指定為“make –f mklib”。
PATH=/user/in
export PATH
#查看變量
echo $PATH
LINUX環(huán)境變量問題?。?!
export PATH=$PATH:/喚攜手usr/和嫌lpp/mmfs/bin/
寫隱畢到/etc/profile里
每次用戶登錄都可以加載了
修改bashrc文件叢大,這種方法更為安全,它可蔽鄭渣以把使用這些環(huán)境變量的權限控制到用戶級別,這里是針對某一特定的用戶,如果你需要給某個用戶權限使用這些環(huán)境變量,你只需要修改宏悄其個人用戶主目錄下的 .bashrc文件就可以了。
在下面添加:
Export PATH=”$PATH:/usr/lpp/mmfs/bin/mmgetstate”
你是我見過懸賞更高的人
留連戲蝶時時舞,自在嬌鶯恰恰啼.
關于linux 環(huán)境變量 重復的介紹到此就結束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關注本站。
香港服務器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務提供商,擁有超過10年的服務器租用、服務器托管、云服務器、虛擬主機、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗。專業(yè)提供云主機、虛擬主機、域名注冊、VPS主機、云服務器、香港云服務器、免備案服務器等。
網(wǎng)頁題目:Linux環(huán)境變量重復:如何避免和解決?(linux環(huán)境變量重復)
分享網(wǎng)址:http://m.5511xx.com/article/cohheoi.html


咨詢
建站咨詢
