ifconfig
位于。我在 root 用户中/sbin/ifconfig
发出命令没有遇到问题。ifconfig
当我创建新用户时,问题就开始出现了。
root@Ubuntu:~# useradd -m user
root@Ubuntu:~#
root@Ubuntu:~# passwd user
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
root@Ubuntu:~#
root@Ubuntu:~# su user
user@Ubuntu:/root$ id
uid=1003(user) gid=1003(user) groups=1003(user)
user@Ubuntu:/root$
ifconfig
在新用户中找不到。
user@Ubuntu:~$ ifconfig
-su: ifconfig: command not found
user@Ubuntu:~$
临时解决方法是从完整路径执行/sbin/ifconfig
user@Ubuntu:~$ whereis ifconfig
ifconfig: /sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz
user@Ubuntu:~$
user@Ubuntu:~$ /sbin/ifconfig
eth0 Link encap:Ethernet HWaddr AA:AA:AA:AA:AA:AA
inet addr:10.0.0.1 Bcast:10.0.0.255 Mask:255.255.255.0
user@Ubuntu:~$
ifconfig
未找到,因为/sbin
在新用户环境中不再配置。
user@Ubuntu:~$ echo $PATH
/home/user/bin:/home/user/.local/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/snap/bin
user@Ubuntu:~$
user@Ubuntu:~$ echo $PATH | grep sbin
user@Ubuntu:~$
我没有在 root 用户上看到此问题,因为这/sbin
是默认情况下的一部分$PATH
。
root@Ubuntu:~# ifconfig
eth0 Link encap:Ethernet HWaddr AA:AA:AA:AA:AA:AA
inet addr:10.0.0.1 Bcast:10.0.0.255 Mask:255.255.255.0
root@Ubuntu:~# echo $PATH | grep sbin
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
root@Ubuntu:~#
问题是为什么
/sbin
默认情况下不包含?这不会给用户带来麻烦吗?如何确保
/sbin
自动添加$PATH
而不是为每个用户手动修改?
答案1
该/sbin
目录用于系统维护和/或管理工具。因此只有管理员可以使用它,并且您的 $PATH 中没有此目录。您可以在文件系统层次结构标准中阅读更多内容跳频。
为变量添加新值的正确位置$PATH
是用户~/.profile
文件或系统/etc/profile
文件。通常已经有一行,$PATH
因此您只需将其添加/sbin
到行首即可。或者只需在文件末尾添加此行:
PATH="/sbin:$PATH"
您还可以编辑/etc/skel/.profile
文件。当您创建新文件时,此文件将被复制到用户的主目录。但是,如果您想让所有用户都拥有此功能,请更改/etc/profile
。