PROMPT_DIRTRIM 不起作用

PROMPT_DIRTRIM 不起作用

我的 中有以下内容.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:

答案1

如果你再深入几层,它就会开始截断

$ 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或从源代码),那么您需要确保您已通过命令更改了您的用户 shell,chsh以便您的运行bash窗口使用新版本bash而不是旧的内置版本。

答案2

这对我有用!

使用自制程序安装 Bash 4

brew install bash

将新 shell 添加到合法 shell 列表中

sudo bash -c "echo /usr/local/bin/bash >> /private/etc/shells"

更改用户的 shell

chsh -s /usr/local/bin/bash

重新启动terminal.app(新窗口也可以)

exec bash

大声喊出GitHub 要点提供信息的作者!

相关内容