Shell
環境變數前的含義
在我使用的舊 Solaris 機器上的 ksh 中:
export PS1="$PWD $"
將提示設置為目前目錄。它工作得很好,直到你在其他地方 cd,然後你看到它不是每次都評估 PWD。我注意到它是通過像這樣設置 PS1 來解決的:
export PS1="\$PWD $"
只是好奇它叫什麼,它是如何工作的,其他應用程序等等。(這是對Google搜尋非常抗拒的東西之一。)
一些文件將有助於解釋這一點。
以下變數會影響 shell 的執行:
PS1:每次互動式 shell 準備好讀取命令時,該變數的值應進行參數擴展並寫入標準錯誤。
…
單引號
用單引號括起來的字元應保留單引號內每個字元的字面值。
…
雙
引號 將字元括在雙引號中應保留雙引號內所有字元的字面值,但
$ 除外:美元符號應保留其引入參數擴展的特殊含義
…
轉義字元(反斜杠)
未引用的反斜杠應保留下一個字元的文字值。
所以 PS1 的值受參數擴展的影響,這就是你想要的,所以
$PWD
每次得到提示時都會評估。這意味著 PS1 的值中需要有一個實際的$PWD
字元串。但,export PS1="$PWD $ "
將在導出語句執行時將PWD 的值放入 PS1。PS1 將類似於
/home/poldie $
,之後將永遠不會改變。你不想要那個。export PS1="\$PWD $ "
反斜杠將引用
$
,以便 PS1 包含文字字元串$PWD $
。你要這個。export PS1='$PWD $ '
會做同樣的事情。用單引號括起來的參數不展開。