我正在使用tcsh,并且我正在尝试将PWD的一部分设置为始终出现在提示符中(因此我将始终知道我在哪个"父"目录中)。
我设法通过以下方式提取提示的所需部分,并且工作正常(我称之为MyTreePath
):
set MyTreePath=`echo $PWD | awk '{... print whichTree}'`
我已经将上面的代码添加到我的.tcshrc
中,并在 .tcshrc
中向我的set prompt
行添加了%$MyTreePath
。
问题是,一旦打开外壳,MyTreePath
就不会改变,即使我要走一条完全不同的路。
如何保持提示中显示的变量更新?
使用神奇的cwdcmd
别名! 它用于定义每次 cwd 更改时执行的命令。在您的情况下,您需要更新变量。
从手册页:
哔哔声、cwdcmd、周期性、前置、后 cmd 和 jobcmd 特别版 可以分别设置别名以在 壳牌想敲钟,当工作目录改变时, 每 tperiod 分钟,在每个提示之前,在每个命令得到之前 执行、执行每个命令后以及启动作业时 或被带到前台。
下面是一个快速示例:
alias cwdcmd 'set FOO=`pwd`'
set prompt='%$FOO >>> '
现场测试:
cd /
/ >>> cd dev
/dev >>>
因此,剩下的就是将上面别名中的pwd
替换为您自己的命令。
有关详细信息和其他魔术别名,请参阅此处。