Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 将PWD的一部分设置为提示并保持变量更新_Linux_Environment Variables_Prompt_Csh_Tcsh - Fatal编程技术网

Linux 将PWD的一部分设置为提示并保持变量更新

Linux 将PWD的一部分设置为提示并保持变量更新,linux,environment-variables,prompt,csh,tcsh,Linux,Environment Variables,Prompt,Csh,Tcsh,我使用的是tcsh,我试图将PWD的一部分设置为始终显示在提示符中(这样我将始终知道我在哪个“parent”目录中) 我成功地用以下方式提取了提示符所需的部分,它工作得很好(我称之为MyTreePath): 我已将上述代码添加到我的.tcshrc中,并已将%$MyTreePath添加到中的设置提示行中 问题是,一旦打开shell,MyTreePath就不会改变,即使我要走的是一条完全不同的路径 如何更新提示中出现的变量?使用神奇的cwdcmd别名!它用于定义每次cwd更改时执行的命令。在您的情况

我使用的是tcsh,我试图将PWD的一部分设置为始终显示在提示符中(这样我将始终知道我在哪个“parent”目录中)

我成功地用以下方式提取了提示符所需的部分,它工作得很好(我称之为
MyTreePath
):

我已将上述代码添加到我的
.tcshrc
中,并已将
%$MyTreePath
添加到
中的
设置提示
行中

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


如何更新提示中出现的变量?

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

从手册页:

beepcmd、cwdcmd、periodic、precmd、postcmd和jobcmd特殊 可以分别设置别名,以便在 当工作目录发生变化时,shell想按铃, 每个t周期分钟,在每个提示之前,在每个命令执行之前 在每个命令执行后以及作业启动时执行 或者被带到前台

下面是一个简单的例子:

alias cwdcmd 'set FOO=`pwd`'
set prompt='%$FOO >>>      '
现场测试:

cd /
/ >>>      cd dev
/dev >>>
所以剩下的就是用您自己的命令替换上面别名中的
pwd


有关更多信息和其他魔法别名,请参阅。

不要使用
csh
tcsh
;阅读并切换到更好的shell(或至少
bash
),请务必使用
tcsh
!作为一个交互式shell,它非常棒!是的,这篇著名的“被认为有害”的文章中的所有内容都是真实的,但大多适用于脚本。通常,我完全避免使用shell脚本。国际海事组织,“壳牌脚本被认为是有害的”。交互式tcsh被认为很棒。请同时显示您的
设置提示
cd /
/ >>>      cd dev
/dev >>>