/etc/login.defs:ENV_PATH 和 ENV_SUPATH 与 PATH

/etc/login.defs:ENV_PATH 和 ENV_SUPATH 与 PATH

有何用途? /etc/login.defsENV_PATHENV_SUPATH

/etc/login.defs

 # REQUIRED  The default PATH settings, for superuser and normal users.  
 #  
 # (they are minimal, add the rest in the shell startup files)  
 ENV_SUPATH   PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin  
 ENV_PATH     PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games  
  • PATH它们的默认初始路径值似乎与我在/etc/profileDebian Jessie 中的初始路径值完全相同。

  • 在人身上,它非常简短地说了什么登录名.defs是用来。页面说得更多一些。

PATH并且ENV_PATH似乎彼此之间没有联系或依赖,或者即使是这样,我也不清楚一个人如何依赖另一个人。

我需要更新这两个地方的 bash 系统路径吗?或者有没有一种方法可以只在一个地方定义路径,并引用这个主路径值?

PATH或者也许这些只是在丢失的情况下用作默认值? ...所以他们真的没有那么重要???

答案1

引用手册页关于登录名.defs

ENV_PATH (字符串) 如果设置,它将用于定义普通用户登录时的 PATH 环境变量。该值是以冒号分隔的路径列表(例如 /bin:/usr/bin),前面可以带有 PATH=。默认值为 PATH=/bin:/usr/bin。

ENV_SUPATH (string) 如果设置,它将用于定义超级用户登录时的 PATH 环境变量。该值是以冒号分隔的路径列表(例如 /sbin:/bin:/usr/sbin:/usr/bin),前面可以带有 PATH=。默认值为 PATH=/sbin:/bin:/usr/sbin:/usr/bin。

两者最初都用于定义普通超级用户的 PATH 变量。我的 login.defs 将 ENV_PATH、ENV_SUPATH 定义为以下

ENV_SUPATH      PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin  
ENV_PATH        PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games

我添加了一个新用户“foo”

sudo useradd foo

sudo passwd foo                                                                                                     
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

当我以“foo”身份登录时

foo@naga-playground:/$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games

对于“根”也是如此

root@naga-playground:/home/pi/# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

用户可以通过 .bashrc、.bash_profile、.zshrc ... 覆盖 PATH

为了使答案完整
ENV_PATH 用于定义普通用户的 PATH
ENV_SUPATH 用于定义超级用户的 PATH

相关内容