2013-03-18 114 views
7

我正在編寫一個shell腳本,讀取具有key = value對的文件並將這些變量設置爲環境變量。但我有一個疑問,如果我做source file.txt會將該文件中定義的變量設置爲環境變量,或者我應該逐行讀取文件,並使用export命令設置它?Unix:源和導出之間有什麼區別?

在這種情況下,源命令是否與導出不同?

+0

您使用的是什麼shell? – shx2 2013-03-18 10:33:31

+2

你爲什麼不試試找出答案? – Mat 2013-03-18 10:33:45

+0

我會對生產環境中的shell腳本中的用戶定義文件進行源代碼的處理。想象一下,一位心懷不滿的員工添加'rm -rf $ {HOME}'(或更糟糕的)行...... – Johnsyweb 2013-03-18 11:21:06

回答

12

當你source文件,分配將被設置爲變量,但不作爲環境變量,除非已設置allexport選項。如果要將變量放置在環境中,則使用allexportsource文件要比讀取文件並明確使用export要簡單得多。換句話說,你應該做的:

set -a 
. file.txt 

(我喜歡.,因爲它比source更便攜,但source作品只是在bash罰款。)

相關問題