Я только что создал новую виртуальную машину CentOS 7 (версия bash 4.2.46) с Vagrant, используя поле centos / 7, и когда я вхожу в систему как бродячий пользователь, это мой ПУТЬ:
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/vagrant/.local/bin:/home/vagrant/bin
Когда вы вошли в систему как root, вот ПУТЬ:
/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
я знаю это /etc/profile
добавляет /usr/local/sbin:/usr/sbin
(в конце для большинства пользователей, в начале для root), и /etc/skel/.bash_profile
который попадает в домашний каталог бродяги, добавляет /home/vagrant/.local/bin:/home/vagrant/bin
, а откуда берется начальная настройка?
В настоящее время у меня нет объяснения, почему пользователи получают /usr/local/bin:/usr/bin
в их PATH, а root получает остальные.
(Честно говоря, порядок корневого PATH кажется очень странным, учитывая, что /usr/local/sbin
и /usr/sbin
должно быть в конце, согласно /etc/profile
.)
Другие люди спрашивали то же самое в системе отслеживания ошибок CentOS. Самый ранний пост, который я нашел, был вот этот.
/ usr / local / bin жестко запрограммирован в / bin / bash.
Как вы увидите, об этой проблеме впервые сообщили в мае 2012 года, и она существовала в CentOS 6 и CentOS 7.
Как бы это ни сбивало с толку, похоже, что ваш анализ путей не из / etc / profile верен. Пути исходят из / bin / bash.
В исходном коде bash "config-top.h" есть следующее:
/* The default value of the PATH variable. */
#ifndef DEFAULT_PATH_VALUE
#define DEFAULT_PATH_VALUE \
"/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:."
#endif
/* The value for PATH when invoking `command -p'. This is only used when
the Posix.2 confstr () function, or CS_PATH define are not present. */
#ifndef STANDARD_UTILS_PATH
#define STANDARD_UTILS_PATH \
"/bin:/usr/bin:/sbin:/usr/sbin:/etc:/usr/etc"
#endif
Это определенно выглядит жестко закодированным в /bin/bash
strings /bin/bash | grep "\/usr\/local\/bin"
/usr/local/bin:/bin:/usr/bin
что кажется ПУТЬ по умолчанию.
В дополнение к предыдущим ответам; Если вы обращаетесь к своей виртуальной машине по ssh, это может иметь смысл.
В /etc/ssh/sshd_config
:
# This sshd was compiled with PATH=/usr/local/bin:/usr/bin