【问题标题】:Setting a part of a PWD as a prompt and keeping a variable updated将 PWD 的一部分设置为提示并保持变量更新
【发布时间】:2014-01-18 22:50:50
【问题描述】:

我正在使用 tcsh,我正在尝试将 PWD 的一部分设置为始终出现在提示符中(因此我将始终知道我在哪个“父”目录中)。

我设法通过以下方式提取了提示的所需部分,并且效果很好(我称之为MyTreePath):

set MyTreePath=`echo $PWD | awk '{... print whichTree}'`

我已将上面的代码添加到我的.tcshrc,并且我已将%$MyTreePath 添加到我的set prompt 行中的.tcshrc

问题是一旦打开外壳,MyTreePath 就不会改变,即使我要走完全不同的路径。

如何让出现在提示中的变量保持更新?

【问题讨论】:

  • 不要使用 cshtcsh ;阅读csh considered harmful 并切换到更好的shell(zshfish 或至少bash
  • 请使用tcsh!作为一个交互式shell,它太棒了!是的,著名的“被认为有害”文章中的所有内容都是正确的,但主要适用于脚本。通常,我完全避免使用 shell 脚本。 IMO,“被认为有害的 shell 脚本”。交互式 tcsh 被认为很棒。
  • 请同时显示您的set prompt

标签: linux environment-variables prompt csh tcsh


【解决方案1】:

使用神奇的cwdcmd 别名!它用于定义每次 cwd 更改时执行的命令。在您的情况下,您需要更新您的变量。

来自手册页:

beepcmd、cwdcmd、periodic、precmd、postcmd 和 jobcmd 特殊 可以分别设置别名来执行命令,当 当工作目录发生变化时,shell 想要响铃, 每 tperiod 分钟,在每个提示之前,在每个命令获取之前 执行,在每个命令执行后,以及作业开始时 或被带到前台。

这是一个简单的例子:

alias cwdcmd 'set FOO=`pwd`'
set prompt='%$FOO >>>      '

现场测试:

cd /
/ >>>      cd dev
/dev >>>

剩下的就是用你自己的命令替换上面别名中的pwd

有关更多信息和其他神奇别名,请参阅here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-24
    • 1970-01-01
    • 2021-01-11
    • 2022-01-12
    • 1970-01-01
    相关资源
    最近更新 更多