簡體   English   中英

Mac OS X“ El Capitan”:無法讀取用戶設置的Bash環境變量

[英]Mac OS X “El Capitan”: cannot read user set Bash environment variables

我有一個外殼腳本,可以導出構建軟件項目(Android密鑰庫位置)所需的幾個環境變量。

通常,當我調用腳本時,環境變量將被導出,IDE可以訪問它們,Bash終端上的export命令也可以訪問它們。

由於我安裝了Mac OS X El Capitan,因此Bash命令設置了環境變量

export FOO="bar"

當我嘗試通過以下方式訪問它們時不會返回

echo $FOO

在外殼上。 相反,我只會得到一個空行。

如果我從外殼程序腳本中使用printenv ,將顯示$F00

當我從Cash終端$FOO調用printenv ,丟失了。

我了解到OS X“ El Capitan”更新修復了一些有關bash的安全問題。 那可能是原因嗎?

我有類似的問題。 似乎環境變量沒有從bash傳播到子進程。 我通過向孩子明確添加所需的變量來解決該問題。

export MYVAR=foo
MYVAR=$MYVAR ./executable_to_launch

我想看看是否有人找到了更好的解決方案。

如果您正在執行操作,則無法使用shebang腳本(該腳本的第一行以#!和可執行文件的路徑名開頭)來修改或導出shell中的變量,因為這樣做會創建一個單獨的進程來執行腳本和它導出的任何變量僅對其子進程可見。

您只能通過在當前進程中執行腳本來安排腳本來修改當前shell中的變量. (或source )。

例如, ~/.bashrc~/.bash_profile~/.bash_logout腳本直接由外殼執行,因此它們可以設置或導出變量,以由命令和從外殼運行的子外殼繼承。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM