如何在执行cd命令后自动在Shell中输出当前工作目录(pwd)
如何在执行cd命令后自动在Shell中输出当前工作目录(pwd)
嗨,这个需求确实挺实用的,我来给你分享两种在Ubuntu的bash里实现的办法,亲测好用:
方法一:重定义cd命令(最直接的方案)
打开你的用户主目录下的~/.bashrc配置文件(用nano ~/.bashrc或者vim ~/.bashrc都可以),在文件末尾添加这段代码:cd() { builtin cd "$@" && pwd }给你解释下这段代码的作用:
builtin cd:调用系统原生的cd命令,避免我们自定义的cd函数递归调用自己,导致出错;"$@":完整传递你给cd的所有参数,比如cd ../test-dir这种带参数的切换操作也能正常处理;&& pwd:只有当cd命令执行成功(也就是目录切换成功)时,才会输出当前工作目录。这样如果你cd到一个不存在的目录,就不会乱输出无效路径啦。
保存文件后,执行
source ~/.bashrc让修改立即生效,之后你再用cd命令,就会像在Solaris上一样,自动显示当前目录了。方法二:利用PROMPT_COMMAND(更灵活的方案)
如果你想覆盖更多场景——比如用pushd、popd这类命令切换目录时也自动显示路径,可以试试这个方法。同样在~/.bashrc末尾添加:# 初始化变量记录上次的工作目录 LAST_PWD="$PWD" PROMPT_COMMAND='if [ "$PWD" != "$LAST_PWD" ]; then pwd; LAST_PWD="$PWD"; fi'原理很简单:bash每次准备显示提示符之前,都会执行
PROMPT_COMMAND里的命令。这里我们对比当前目录和上次记录的目录,只要目录发生了变化,就自动输出pwd,同时更新记录的目录。这样不管你用什么方式切换目录,都能自动显示当前路径。
要是之后想恢复原来的cd行为,只要把添加的代码从~/.bashrc里删掉,再执行source ~/.bashrc就可以啦。
备注:内容来源于stack exchange,提问作者chessytoasty
相关产品推荐
相关产品推荐

