7
我正在編寫一個shell腳本,讀取具有key = value對的文件並將這些變量設置爲環境變量。但我有一個疑問,如果我做source file.txt
會將該文件中定義的變量設置爲環境變量,或者我應該逐行讀取文件,並使用export命令設置它?Unix:源和導出之間有什麼區別?
在這種情況下,源命令是否與導出不同?
我正在編寫一個shell腳本,讀取具有key = value對的文件並將這些變量設置爲環境變量。但我有一個疑問,如果我做source file.txt
會將該文件中定義的變量設置爲環境變量,或者我應該逐行讀取文件,並使用export命令設置它?Unix:源和導出之間有什麼區別?
在這種情況下,源命令是否與導出不同?
當你source
文件,分配將被設置爲變量,但不作爲環境變量,除非已設置allexport
選項。如果要將變量放置在環境中,則使用allexport
和source
文件要比讀取文件並明確使用export
要簡單得多。換句話說,你應該做的:
set -a
. file.txt
(我喜歡.
,因爲它比source
更便攜,但source
作品只是在bash
罰款。)
您使用的是什麼shell? – shx2 2013-03-18 10:33:31
你爲什麼不試試找出答案? – Mat 2013-03-18 10:33:45
我會對生產環境中的shell腳本中的用戶定義文件進行源代碼的處理。想象一下,一位心懷不滿的員工添加'rm -rf $ {HOME}'(或更糟糕的)行...... – Johnsyweb 2013-03-18 11:21:06