我检查过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: aliased to 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 .
Q: Why it is so?
这是因为您的初始化文件覆盖了您的自定义 sudo
别名。一次只能为一个命令设置一个别名。
你可以做什么:
方法1
为您的别名选择另一个名称:
alias jsudo='sudo env JAVA_HOME="$JAVA_HOME"'
另请注意您的版本与此版本之间的引用差异。
方法2
查找并删除 zsh init 文件中覆盖别名的行。某处会出现一行 alias sudo='no Correct sudo'
。
如果您无法找到此行,则必须坚持使用方法 1。这将是您的失败,而不是 zsh 或 Linux 的问题。
更新您的 sudo
别名
alias sudo='nocorrect sudo env JAVA_HOME="$JAVA_HOME"'
<小时/>
PS:整个 no Correct
业务是为了防止 zsh 更正您的命令,这通常对 sudo 没有帮助。
我是一名优秀的程序员,十分优秀!