Mac OS X 使用 sudo 时没有环境变量

Or *_*lel 2 macos bash environment-variables nativescript macos-high-sierra

我正在尝试在 mac os high Sierra 上为 nativescript 设置开发环境。

我安装了所有需要的工具(其中包含android sdk,jdk)。并使用 .bash_profile、.bash_rc 为它们添加了路径(ANDROID_HOME、JAVA_HOME)。

如果 tns doctor 检查环境变量是否已设置 - 一切都很好。

但是当我运行 sudo tns doctor 时,它显示 ANDROID_HOME 和 JAVA_HOME 并且没有配置。我认为这可能更多是 mac 问题而不是 nativescript 问题。

有任何想法吗?

Kam*_*Cuk 9

来自man sudo

-E
-E(保留环境)选项向安全策略表明用户希望保留其现有的环境变量。如果指定了 -E 选项并且用户没有保留环境的权限,则安全策略可能会返回错误。

如果您希望变量保留其值,请调用sudo -E tns doctor. 您也可以调用sudo "ANDROID_HOME=$ANDROID_HOME" "JAVA_HOME=$JAVA_HOME" tns doctor仅导出这两个变量。


Oo.*_*.oO 5

你需要使用-E

> export VAR=hello
> sudo su
Password:
> env | grep VAR
> exit
> sudo -E su
> env | grep VAR
VAR=hello
Run Code Online (Sandbox Code Playgroud)