我试图将某些功能从旧的.bashrc移植到我的.zshrc中,并且遇到了在bash中有效的情况。
每当我远程登录到计算机时,我都会bash检查该$-
变量以查看它是否是交互式的。如果是这样,我将启动一台emacs服务器(如果尚未运行)并转到我的代码目录。否则(例如,如果我要获取带有scp的文件),我将什么也不做。
这是一些代码:
if [[ $- -regex-match "i" ]]; then
ps -u myusername | grep emacs > /dev/null
if [ $? -eq 0 ]; then
echo "emacs server already running"
else
emacsserver
fi
aliastocdtomydirectory
fi
这是zsh给我的错误:.zshrc:125: unrecognized condition:
$-'`
有谁知道在使用时如何解决这个错误$-
?我试过引用它,将其包装起来,$(echo $-)
但是没有一个起作用。提前致谢。
编辑:如果我将代码切换为:
if [[ $- =~ "i" ]]; then
ps -u myusername | grep emacs > /dev/null
if [ $? -eq 0 ]; then
echo "emacs server already running"
else
emacsserver
fi
aliastocdtomydirectory
fi
我现在得到:.zshrc:125: condition expected: =~
我不太确定zsh在这里解释不正确,因为我对zsh的shell脚本的语义不是很熟悉。有人可以向我指出如何在zsh中表达这种情况的正确方向吗?
在中zsh
,您无需理会$-
,我认为主要是为了实现POSIX兼容性。
if [[ -o INTERACTIVE ]]; then
if ps -u myusername | grep -q emacs; then
echo "emacs server already running"
else
emacsserver
fi
aliastocdtomydirectory
fi
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句