В текстовой консоли, программа getty ждет входа пользователя в систему. Она выводит на консоль 'login:' и другие сообщения. Она работает с окружением init. Когда getty пропускает пользователя в систему, она запускает программу 'login', которая устанавливает пользовательское окружение и запускает shell.
Программа login устанавливает путь, как описано в /usr/include/paths.h. Причем его значение различно для root и обыкновенных пользователей.
для обычных пользователей (_PATH_DEFPATH):
/usr/local/bin:/usr/bin:/bin:. |
/sbin:/bin:/usr/sbin:/usr/bin |
Переменная path обычных пользователей не содержит директорий sbin. В тоже время она содержит текущую директорию, '.', что считается опасным для пользователя root. Также path для root не содержит /usr/local/bin.
Значение path установленное login, часто переписывается при инициализации shell. В тоже время возможно указывать другие программы в /etc/passwd в качестве командных интерпретаторов пользователя. Например, я использовал следующую строку, чтобы запускать PPP, когда я вхожу под определенным именем пользователя. В данном случае, pppd наследует путь login.
etu-ppp:viYabVlxPwzDl:1000:1000:Esa Turtiainen, PPP:/:/usr/sbin/pppd |