正在尝试根据CWD更改bash提示符的颜色。Can';更改目录后无法更新它
我有两个存储驱动器,正在尝试将我的bashrc文件配置为: 如果cwd位于驱动器B上:正在尝试根据CWD更改bash提示符的颜色。Can';更改目录后无法更新它,bash,prompt,truncate,ps1,Bash,Prompt,Truncate,Ps1,我有两个存储驱动器,正在尝试将我的bashrc文件配置为: 如果cwd位于驱动器B上: 截断bash提示符,从第二个驱动器的/home目录开始 将bash提示符的颜色更改为红色,表示我正在另一个驱动器中工作 到目前为止,我已经能够用下面的代码完成颜色的更改,并且可以通过使用“\W”修饰符截断整个提示符以仅显示basename——但是我正在努力通过指定底部目录来修剪提示符_命令 即 /媒体/devj/2a24a03f-99a1-44bd-9a53-341zdd68334b/home/dev--
- 截断bash提示符,从第二个驱动器的/home目录开始
- 将bash提示符的颜色更改为红色,表示我正在另一个驱动器中工作
#Check if we are accessing my home folder from secondary drive
#If so change the color and trim the filepath to secondary /home
bash_prompt_command() {
root_path=`pwd | awk -F/ '{print $(NF-(NF-2))}'`
if [ $root_path = media ]; then #Shared drive
#Trim path up to the home directory
trim_path=${PWD#/media/devj/9a84a09e-80e9-44bd-9a53-342e3d48334c/}
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\u@\h\[\033[00m\]:\[\033[01;34m\]$trim_path\[\033[38;5;214m\]$(parse_git_branch)\[\033[00m\]\$ '
else
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[38;5;214m\]$(parse_git_branch)\[\033[00m\]\$ '
fi
}
# init it by setting PROMPT_COMMAND
PROMPT_COMMAND=bash_prompt_command
trim_path=${PWD}/*/*/*/}
替换路径开头要忽略的任意多个目录。在这里可能很有用。当您在驱动器A的某个子目录X中时,您希望提示符是什么样子?当你在驱动器B的某个子目录中时,你希望它是什么样子?谢谢你提示的提示,这正是我想要的。有没有办法检查当前工作目录离根目录有多深,这样我就可以动态更改PROMPT\u DIRTRIM的值。基本上,我希望驱动器a和驱动器b从每个驱动器的主目录开始看起来相同。如果我在驱动器B/dev/home/documents上的documents文件夹中,我希望它是这样的。/dev/home/documents要查看您有多深,可以在
bash\u prompt\u命令中计算当前目录路径中的斜杠数:斜杠=${PWD/[!\/];深度=${#斜线}
然后将PROMPT_DIRTRIM
设置为基于此的内容。您可以将其缩短为trim_path=${PWD#/media/devj/9a84a09e-80e9-44bd-9a53-342e3d48334c/}