我首先检查了这个答案:
我的问题仍然是:
如果我把这些行放在我的~.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没有帮助。