CentOS系统CShell终端标签显示无路径目录名报错求助
CentOS系统CShell终端标签显示无路径目录名报错求助
嗨,我来帮你搞定这个问题~
你遇到的"Illegal variable name"错误,本质是因为CShell(包括csh和tcsh)不支持Bash里常用的$()命令替换语法,你之前用的$(pwd)在CShell里会被当成非法变量名来解析,所以才报错。
要实现终端标签只显示当前目录名(不带完整路径),可以这么改:
单次执行的命令
echo -en "\033]0;`basename "$PWD"` \a"
这里的关键点:
- 用CShell支持的反引号
`来做命令替换,代替$() $PWD是CShell内置的环境变量,直接指向当前工作目录,比调用pwd命令更高效basename命令会自动提取路径最后一段的目录名,完美去掉前面的路径部分
自动更新标签的配置
如果想每次切换目录(比如用cd命令)都自动更新终端标签,你可以把这个命令加到你的shell配置文件里:
- 编辑
~/.cshrc或者~/.tcshrc文件(取决于你用的是csh还是tcsh) - 添加下面的别名配置:
alias chpwd 'echo -en "\033]0;`basename "$PWD"` \a"'
保存退出后,重新打开终端或者执行source ~/.cshrc(对应你的配置文件),以后每次切换目录,终端标签就会自动变成当前的目录名啦~
备注:内容来源于stack exchange,提问作者Li Sa
相关产品推荐
相关产品推荐

