![我应该如何解决“-bash:promptpath:未找到命令”?](https://linux22.com/image/796226/%E6%88%91%E5%BA%94%E8%AF%A5%E5%A6%82%E4%BD%95%E8%A7%A3%E5%86%B3%E2%80%9C-bash%EF%BC%9Apromptpath%EF%BC%9A%E6%9C%AA%E6%89%BE%E5%88%B0%E5%91%BD%E4%BB%A4%E2%80%9D%EF%BC%9F.png)
我的 Turnkeylinux 机器使用以下 PS1 环境变量作为 bash 提示符:
PS1="${debian_chroot:+($debian_chroot)}\[\033[01;33m\]\u@\h \[\033[01;34m\]$(promptpath)\[\033[00m\]\$"
我将上述内容插入到本质上是库存的“Debian GNU/Linux 6.0 \n \l”中,它抱怨“promptpath”不可用。
我尝试了“which promptpath”,结果为 NULL(什么也没找到)。既然 promptpath 似乎不是一个程序,那么它是什么呢?
我必须做什么才能使 promptpath 在库存 Debian 机器上可用,以便提示可以不做任何更改地工作?
答案1
我研究了一下,发现~/.bashrc
promptpath 是某种用户定义的函数。
# Set prompt path to max 2 levels for best compromise of readability and usefulness
promptpath () {
realpwd=$(realpath $PWD)
realhome=$(realpath $HOME)
# if we are in the home directory
if echo $realpwd | grep -q "^$realhome"; then
path=$(echo $realpwd | sed "s|^$realhome|\~|")
if [ $path = "~" ] || [ $(dirname $path) = "~" ]; then
echo $path
else
echo $(basename $(dirname $path))/$(basename $path)
fi
return
fi
path_dir=$(dirname $PWD)
# if our parent dir is a top-level directory, don't mangle it
if [ $(dirname $path_dir) = "/" ]; then
echo $PWD
else
path_parent=$(basename $path_dir)
path_base=$(basename $PWD)
echo $path_parent/$path_base
fi
}
我只是将 TurnkeyLinux 复制~/.bashrc
到了我的 Debian 机器上。