使用zshrc对sudo进行别名 - 获取"别名为nocorrect sudo"

时间:2014-04-09 21:58:32

标签: linux shell zshrc

我先检查了this回答:

我的问题仍然是:

如果我将这些行放到我的〜.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

工作正常。

- 此外,我尝试按照建议here

设置“空格别名”

我也厌倦了这个:

...

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

喜欢建议here

1 个答案:

答案 0 :(得分:0)

  问:为什么会这样?

这是因为您的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没有帮助。