Часто пользовательские процессы являются дочерними процессами командного интерпретатора, указанного в /etc/passwd для данного пользователя. Файлы инициализации командных интерпретаторов обычно модифицируют этот путь.
В login, имя командного интерпретатора предваряется '-', например bash вызывается как '-bash'. Это сигнализирует интерпретатору, что он является 'login' интерпретатором. В этом случае, интерпретатор вызывает файлы начальной инициализации. Иначе выполняется 'облегченная' версия инициализации. Дополнительно, интерпретатор проверяет 'интерактивность' сессии - считываются-ли команды из файла или с поступают интерактивного терминала. Это влияет на процесс инициализации, так, что не интерактивные сессии инициализируются минимально. Bash не вызывает в этом случае никаких файлов инициализации!
Вызванный как обычный 'login' интерпретатор, bash исполняет общесистемный файл инициализации /etc/profile, где можно установить системное окружение и path для пользователей bash. Когда интерпретатор вызывается в не-интерактивном режиме, этот файл не исполняется. Наиболее важный случай - это rsh, когда удаленная команда исполняется на другой машине. В таком случае /etc/profile не запускается, и path наследуется у демона rsh.
Bash имеет аргументы командной строки -login и -i, которые могут быть использованы для установки интерпретатора в качестве 'login' интерпретатора или интерактивного интерпретатора.
Пользователь может изменить значения указанные в /etc/profile, создав файл ˜/.bash_profile, ˜/.bash_login или ˜/.profile . Заметьте, что только первый из этих файлов исполняется в зависимости от логики инициализации csh. ˜/.bash_login не исполняется для 'login' интерпретаторов и если существует .bash_profile, он не исполняется вообще!
Если bash используется с именем sh, вместо bash, он эмулирует инициализацию оригинального Bourne shell интерпретатора: исполняет только файлы /etc/profile и ˜/.profile и только для 'login' интерпретаторов.
В качестве login интерпретатора tcsh исполняет следующие файлы в указанном порядке:
/etc/csh.cshrc
/etc/csh.login
˜/.tcshrc
˜/.cshrc (если не найден .tcshrc)
˜/.history
˜/.login
˜/.cshdirs
tcsh может быть скомпилирован так, чтобы исполнять login скрипты перед cshrc скриптами. Остерегайтесь !
Не интерактивные интерпретаторы исполняют только *cshrc скрипты*. login скрипты могут быть использованы для установки path, только 1 раз, при входе в систему.