Osx

無法更改環境變數

  • November 22, 2018

我在用什麼

  • 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並重置並沒有任何變化……

USERNAMEshell 變數在 Z shell 中是特殊的。

它始終是 shell 程序的使用者 ID 的帳戶名。

您不會觀察到在 Almquist、Watanabe、Korn 或 Bourne Again shell 中觀察到的行為。這個變數只是一個普通的 shell 變數,就他們而言,它一開始是未設置的。例如,這是 93 Korn shell:

$ 迴聲 $USERNAME

$ 使用者名=wibble
$ 迴聲 $USERNAME
顫抖
$

在 Z shell 中,它以 shell 程序的 UID 的帳戶名開始。設置它的嘗試將嘗試更改該 UID。如果您不是超級使用者並且將變數保留為以前的狀態,這當然會失敗。

但是,如果您以超級使用者身份執行 Z shell,您會看到USERNAMEshell 變數和 shell 程序的使用者 ID 都發生了變化。

root # 回顯 $USERNAME
根
根#使用者名=JdeBP
血壓%

進一步閱讀

引用自:https://unix.stackexchange.com/questions/483469