用 zshrc 混叠 sudo - 得到"aliased to nocorrect sudo"



我首先检查了这个答案:

我的问题仍然是:

如果我把这些行放在我的~.zshrc文件中:

JAVA_HOME="/user/lib/jvm/java-7-openjdk-amd64"
export JAVA_HOME
alias sudo="sudo env JAVA_HOME=$JAVA_HOME"

然后注销。

然后尝试:

> sudo ./somejava-stuff.sh

我仍然看到"JAVA_HOME环境变量未定义"

当我检查我的别名是否被应用时:

> which sudo 

我得到了意想不到的输出,上面写着:

"sudo:别名为nocorrect sudo"

问:为什么会这样?

如果我手动操作:

> sudo env JAVA_HOME=$JAVA_HOME ./somejava-stuff.sh

它运行良好。

--此外,我还尝试设置"带空格的别名",正如这里所建议的那样

我也厌倦了这个:

...
alias sudo='nocorrect sudo'
alias sudo="sudo env JAVA_HOME=$JAVA_HOME "

就像这里建议的那样。

Q: 为什么会这样?

这是因为您的init文件覆盖了您的自定义sudo别名。一次只能为一个命令使用一个别名。

你能做什么:

方法1

为您的别名选择另一个名称:

alias jsudo='sudo env JAVA_HOME="$JAVA_HOME"'

还要注意你的版本和这个版本之间的引用差异。

方法2

在zsh-init文件中查找并删除覆盖别名的行。在某个地方,会有一行字写着alias sudo='nocorrect sudo'

如果找不到此行,则必须使用方法1。这将是您的失败,而不是zsh或Linux的问题。

使用更新您的sudo别名

alias sudo='nocorrect sudo env JAVA_HOME="$JAVA_HOME"'

PS:nocorrect的全部任务是防止zsh更正您的命令,这通常对sudo没有帮助。

相关内容

  • 没有找到相关文章

最新更新