gpt4 book ai didi

linux - 基于文件系统中位置的 Shell 提示符

转载 作者:IT王子 更新时间:2023-10-29 01:01:12 24 4
gpt4 key购买 nike

我必须在根文件系统下的三个主要目录中工作——home/username、project 和 scratch。我希望我的 shell 提示符显示我在这些顶级目录中的哪一个。

这是我正在尝试做的事情:

top_level_dir ()
{
if [[ "${PWD}" == *home* ]]
then
echo "home";
elif [[ "${PWD}" == *scratch* ]]
then
echo "scratch";
elif [[ "${PWD}" == *project* ]]
then
echo "project";
fi

}

然后,我将 PS1 导出为:

export PS1='$(top_level_dir) : '

不幸的是,这并没有像我想要的那样工作。当我在我的主目录中时,我得到 home : 作为我的提示,但是如果我切换到 scratch 或 projects,则提示不会改变。我不太了解 bash 脚本,所以如果能帮助我更正我的代码,我将不胜感激。

最佳答案

每次更改工作目录时,您都可以连接到 cd 以更改提示。我经常问自己如何挂接到 cd 但我认为我现在找到了解决方案。将这个添加到你的 ~/.bashrc 怎么样?:

#
# Wrapper function that is called if cd is invoked
# by the current shell
#
function cd {
# call builtin cd. change to the new directory
builtin cd $@
# call a hook function that can use the new working directory
# to decide what to do
color_prompt
}

#
# Changes the color of the prompt depending
# on the current working directory
#
function color_prompt {
pwd=$(pwd)
if [[ "$pwd/" =~ ^/home/ ]] ; then
PS1='\[\033[01;32m\]\u@\h:\w\[\033[00m\]\$ '
elif [[ "$pwd/" =~ ^/etc/ ]] ; then
PS1='\[\033[01;34m\]\u@\h:\w\[\033[00m\]\$ '
elif [[ "$pwd/" =~ ^/tmp/ ]] ; then
PS1='\[\033[01;33m\]\u@\h:\w\[\033[00m\]\$ '
else
PS1='\u@\h:\w\\$ '
fi
export PS1
}


# checking directory and setting prompt on shell startup
color_prompt

关于linux - 基于文件系统中位置的 Shell 提示符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18243946/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com