2015-10-28 57 views
0

我有一個變量取消導出ENVIROMENTAL變量

pathname="xxx" 

我已經將它設置爲使用

export pathname="xxx" 

如何「反」,並做出不出口變量的環境變量?

+1

Bash參考手冊條目[export](http://www.gnu.org/software/bash/manual/bashref .html#index-export) –

+0

哪個shell?據我所知,你不能在POSIX shell中做到這一點。 – chepner

+0

即時消息不工作POSIX外殼 – Darlyn

回答

1

bash中,您可以使用typeset(或其同義詞declare)刪除導出屬性。

$ export foo=3 
$ bash -c 'echo $foo' 
3 
$ typeset +x foo 
$ bash -c 'echo $foo' 

$ 

(同樣的命令zshksh作品,你可以在任何bashzsh使用declare,但不ksh,並且它可能是更常見的看到它在實踐中使用。)

由於據我所知,沒有辦法刪除POSIX shell中的export屬性。 (dash是一個shell不提供作爲declare這種擴展的一個突出的例子。)你將需要保存在臨時值的值,未設置原,然後重置原始:

$ export foo=3 
$ tmp=$foo 
$ unset foo 
$ foo=$tmp 
$ echo "$foo" 
3 
$ sh -c 'echo $foo' 

$ 

dash ,至少明確說明刪除導出屬性的唯一方法是取消它。)

+0

我從來沒有見過'排版'在我的生活中。請建議實際使用的替代方案IRL;) –

+0

我最初使用'declare',但切換到'typeset'來簡化三個「主要」炮彈的討論。 'ksh'不支持'declare'。 – chepner

+0

那有道理。但它仍然感覺錯誤。 –