我先检查了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。
答案 0 :(得分:0)
问:为什么会这样?
这是因为您的init文件会覆盖自定义sudo
别名。一次只能有一个命令的一个别名。
你能做什么:
为别名选择其他名称:
alias jsudo='sudo env JAVA_HOME="$JAVA_HOME"'
另请注意您的版本与此之间引用的区别。
查找并删除覆盖别名的zsh init文件中的行。在某个地方,会有一行alias sudo='nocorrect sudo'
。
如果您无法找到此行,则必须坚持方法1 。这将是您的失败,而不是zsh或Linux的问题。
使用
更新sudo
别名
alias sudo='nocorrect sudo env JAVA_HOME="$JAVA_HOME"'
PS:整个nocorrect
业务是为了防止zsh纠正你的命令,这通常对sudo没有帮助。