设置PATH,使其适用于所有用户,包括root / sudo


41

如何为服务器上的所有用户设置PATH变量中的说明努力为所有“普通”用户设置PATH。但是,如果这样做sudo -s,则printenv PATH不会显示更新的路径。我看过例如为root设置TeX Live路径,但这对我来说似乎没有意义,也许是因为我来自Windows背景。是否有任何方法可以设置真正的系统范围的路径,以使条目绝对被系统上运行的每个进程继承?

Answers:


43

更新:

设置全局环境变量仍应在中执行/etc/environment,但是正如您所指出的那样,使用sudo -s具有这些变量的作用“消失”了。

这样做的原因是sudo有一个重置环境和设置安全路径的策略。默认情况下启用:

/etc/sudoers:

Defaults  env_reset
Defaults  secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

因此/etc/environment,在路径中设置的任何内容都将被覆盖sudo

sudoers状态手册页:

   env_reset       If set, sudo will reset the environment to only contain
                   the LOGNAME, MAIL, SHELL, USER, USERNAME and the SUDO_*
                   variables.  Any variables in the caller's environment
                   that match the env_keep and env_check lists are then
                   added.  The default contents of the env_keep and
                   env_check lists are displayed when sudo is run by root
                   with the -V option.  If the secure_path option is set,
                   its value will be used for the PATH environment
                   variable.  This flag is on by default.

作为一种解决方法,您可以使用sudo su它将为shell提供root特权但包含正确的PATH。


原始答案

您应该将其设置为/etc/environment

尝试sudo YOUR_TEXT_EDITOR /etc/environment(确保首先创建备份)。

有关更多信息:EnvironmentVariables

系统范围的环境变量

影响整个系统(而不是特定用户)的环境变量设置不应放在加载系统或桌面会话时执行的许多系统级脚本中的任何一个中,而应放在

/etc/environment-该文件专门用于系统范围的环境变量设置。它不是脚本文件,而是由赋值表达式组成,每行一个。具体来说,此文件存储系统范围的语言环境和路径设置。

不建议:

/etc/profile-每当输入bash登录外壳程序(例如,从控制台或通过ssh登录)时,以及在桌面会话加载时,DisplayManager都会执行此文件。向老UNIX系统管理员询问环境变量时,可能会引用该文件。但是,在Ubuntu中,此文件只需要执行/etc/bash.bashrc文件即可。

/etc/bash.bashrc-这是〜/ .bashrc文件的系统范围版本。默认情况下,Ubuntu配置为在用户进入外壳程序或桌面环境时执行此文件。


嗯,对我来说,这是错误的方法(每个人都应该继承相同的路径,时间段),但是我想这就是事实。
2012年

您可以使用visudo(需要root权限)来编辑安全路径设置。不建议这样做。它只是在这里进行教育。
Elliot Labs LLC

2

sudo -i将模拟登录(与相似sudo su -),从而为您提供这些环境变量。


1
它不能那样工作。至少PATH在我的Ubuntu Trusty test-vm上重置。
Martijn Heemels,2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.