Bash

PROMPT_DIRTRIM 不工作

  • June 24, 2016

我有以下內容.bash_profile

PROMPT_DIRTRIM=3
export PS1='$ \u in \w: '

但是,當我在目錄中深入導航時,路徑不會縮短。這是提示顯示的內容:

$ myname in ~/Desktop/level3/level4/level5:

我嘗試重新啟動 iTerm,但沒有幫助。當我執行時bash --version,我得到以下輸出:

GNU bash, version 4.3.42(1)-release (x86_64-apple-darwin15.4.0)
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

我哪裡錯了?

編輯更深入:

$ myname in ~/Desktop/level3/level4/level5/level6/level7/level8/level9:

如果你再深入幾級,它就會開始截斷

$ sweh in ~: cd D1
$ sweh in ~/D1: cd D2
$ sweh in ~/D1/D2: cd D3
$ sweh in ~/D1/D2/D3: cd D4
$ sweh in ~/D1/D2/D3/D4: cd D5
$ sweh in ~/.../D3/D4/D5: cd D6
$ sweh in ~/.../D4/D5/D6: 

在 $HOME 之外,它似乎更早被截斷:

$ sweh in ~: cd /usr/local/share/locale/
$ sweh in .../local/share/locale: 

您可以看到它在這兩種情況下都希望保留 3 級目錄,但是在 $HOME 中它以 ~/ 為前綴,並且它足夠聰明地知道 4 個目錄與 3 個目錄,並且...在這種情況下並不重要。

MacOS 附帶的本機版本bash還不足以理解這一點。如果您已經安裝了較新的版本(例如通過brew或從原始碼),那麼您需要確保您已經通過chsh命令更改了您的使用者 shell,以便您的執行bash視窗使用新版本bash而不是舊的內置版本。

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