Osx
無法更改環境變數
我在用什麼
- zsh
- MacOS 莫哈韋 14.10
我想做的事
$ echo $USERNAME myusername $ export USERNAME=newvalue $ echo $USERNAME newvalue
怎麼了
$ echo $USERNAME myusername $ export USERNAME=newvalue $ echo $USERNAME myusername
我嘗試了什麼
嘗試設置
USERNAME
,.bashrc
,.zshrc
但.profile
沒有任何變化…嘗試
unset
並重置並沒有任何變化……
USERNAME
shell 變數在 Z shell 中是特殊的。它始終是 shell 程序的使用者 ID 的帳戶名。
您不會觀察到在 Almquist、Watanabe、Korn 或 Bourne Again shell 中觀察到的行為。這個變數只是一個普通的 shell 變數,就他們而言,它一開始是未設置的。例如,這是 93 Korn shell:
$ 迴聲 $USERNAME $ 使用者名=wibble $ 迴聲 $USERNAME 顫抖 $
在 Z shell 中,它以 shell 程序的 UID 的帳戶名開始。設置它的嘗試將嘗試更改該 UID。如果您不是超級使用者並且將變數保留為以前的狀態,這當然會失敗。
但是,如果您以超級使用者身份執行 Z shell,您會看到
USERNAME
shell 變數和 shell 程序的使用者 ID 都發生了變化。root # 回顯 $USERNAME 根 根#使用者名=JdeBP 血壓%
進一步閱讀
- 保羅·福斯塔德等人。(2015-12-02)。“ Shell 設置的參數”。Z 殼手冊。5.2.