【发布时间】:2019-09-20 01:55:05
【问题描述】:
我正在尝试使用缩短我的 bash 提示符的函数。我已经添加到.bash_profile:
function last_two_dirs {
pwd |rev| awk -F / '{print $1,$2}' | rev | sed s_\ _/_
}
export PS1='$(last_two_dirs) $(__git_ps1) ➡ '
但我每次启动 git bash 时都会收到错误 bash: rev: command not found。
我已经正确设置了PATH,因为除了rev 之外的其他命令都能正常工作。 rev 不是 git bash 的一部分吗?或者有没有其他方法可以只显示 bash 提示符的父目录和当前目录?
操作系统:Windows 10
【问题讨论】:
-
旁注:你不应该
export你的PS1。它应该只为交互式 shell 设置,通常会进入~/.bashrc。 -
rev是一个外部命令(一个单独的可执行文件),而不是 shell 本身的一部分;因此,它不是 任何 bash 版本的一部分,而是存在(或不存在)的东西,具体取决于您是否单独安装(或包含在您的操作系统中)。 -
顺便说一句,在提示符中使用命令替换是一个非常糟糕的主意——它们慢,在 Windows 上尤其慢。最好只使用本机 shell 逻辑(根本不使用命令替换;bash 有一个
PROMPT_COMMAND挂钩,您可以使用它来指定一个更改 PS1 的函数,如果操作正确,则根本不涉及分叉子进程)。 -
使用
\w和PROMPT_DIRTRIM=2。