Mac OS X 使用sudo时没有环境变量
Mac OS X no environment variables when using sudo
我正在尝试在 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 问题。
有什么想法吗?
您需要使用-E
> export VAR=hello
> sudo su
Password:
> env | grep VAR
> exit
> sudo -E su
> env | grep VAR
VAR=hello
来自man sudo:
-E
The -E (preserve environment) option indicates to the security policy that the user wishes to preserve their existing environment variables. The security policy may return an error if the -E option is specified and the user does not have permission to preserve the environment.
如果您希望变量保留其值,请调用 sudo -E tns doctor
。您也可以调用 sudo "ANDROID_HOME=$ANDROID_HOME" "JAVA_HOME=$JAVA_HOME" tns doctor
仅导出这两个变量。
我正在尝试在 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 问题。
有什么想法吗?
您需要使用-E
> export VAR=hello
> sudo su
Password:
> env | grep VAR
> exit
> sudo -E su
> env | grep VAR
VAR=hello
来自man sudo:
-E
The -E (preserve environment) option indicates to the security policy that the user wishes to preserve their existing environment variables. The security policy may return an error if the -E option is specified and the user does not have permission to preserve the environment.
如果您希望变量保留其值,请调用 sudo -E tns doctor
。您也可以调用 sudo "ANDROID_HOME=$ANDROID_HOME" "JAVA_HOME=$JAVA_HOME" tns doctor
仅导出这两个变量。