LINUX.ORG.RU

История изменений

Исправление Deleted, (текущая версия) :

man bash

1.

When bash is invoked as an interactive login shell, or as a non-interactive shell with the --login option, it first reads and executes commands from the file /etc/profile, if that file exists. After reading that file, it looks for ~/.bash_profile, ~/.bash_login, and ~/.profile, in that order, and reads and executes commands from the first one that exists and is readable.

Т.е. единожды при логине исполняется /etc/profile и первый встреченный из эти: ~/.bash_profile, ~/.bash_login, and ~/.profile

2.

When an interactive shell that is not a login shell is started, bash reads and executes commands from ~/.bashrc, if that file exists.

Каждый раз при запуске просто шелла (и, напр., эмулятора виртуального терминала (xterm\gnome-terminal) bash исполняет ~/.bashrc

When bash is started non-interactively, to run a shell script, for example, it looks for the variable BASH_ENV in the environment, expands its value if it appears there, and uses the expanded value as the name of a file to read and execute.

Т.е. при запуске bash-скрипта никакой ~/.bashrc не выполняется, но может использоваться BASH_ENV (которая может быть назначена где-то раньше - при логине или при запуске шелла)

3.

If bash is invoked with the name sh, it tries to mimic the startup behavior of historical versions of sh as closely as possible, while conforming to the POSIX standard as well. When invoked as an interactive login shell, or a non-interactive shell with the --login option, it first attempts to read and execute commands from /etc/profile and ~/.profile, in that order.

sh-совместимость. При запуске баша по симлинку с sh для логина исполняются /etc/profile and ~/.profile Стоит сравнить с п.1, в котором ~/.profile может не исполняться, при наличии ~/.bash_profile или ~/.bash_login !

4.

When invoked as an interactive shell with the name sh, bash looks for the variable ENV, expands its value if it is defined, and uses the expanded value as the name of a file to read and execute.

Аналог п.2 для sh-совместимого запуска. Запуск шелла как sh не читает определенные rc-файлы, только указанный в переменной ENV

A non-interactive shell invoked with the name sh does not attempt to read any other startup files.

Делаю вывод, что при запуске sh-скриптов (в частности тех, у которых шебанг #!/usr/bin/sh), никакие дополнительные rc-файлы не исполняются, используется только уже существующее окружение.

Исходная версия Deleted, :

man bash

1.

When bash is invoked as an interactive login shell, or as a non-interactive shell with the --login option, it first reads and executes commands from the file /etc/profile, if that file exists. After reading that file, it looks for ~/.bash_profile, ~/.bash_login, and ~/.profile, in that order, and reads and executes commands from the first one that exists and is readable.

Т.е. единожды при логине исполняется /etc/profile и первый встреченный из эти: ~/.bash_profile, ~/.bash_login, and ~/.profile

2.

When an interactive shell that is not a login shell is started, bash reads and executes commands from ~/.bashrc, if that file exists.

Каждый раз при запуске просто шелла (и, напр., эмулятора виртуального терминала (xterm\gnome-terminal) bash исполняет ~/.bashrc

When bash is started non-interactively, to run a shell script, for example, it looks for the variable BASH_ENV in the environment, expands its value if it appears there, and uses the expanded value as the name of a file to read and execute.

Т.е. при запуске bash-скрипта никакой ~/.bashrc не выполняется, но может использоваться BASH_ENV (которая может быть назначена где-то раньше - при логине или при запуске шелла)

3.

If bash is invoked with the name sh, it tries to mimic the startup behavior of historical versions of sh as closely as possible, while conforming to the POSIX standard as well. When invoked as an interactive login shell, or a non-interactive shell with the --login option, it first attempts to read and execute commands from /etc/profile and ~/.profile, in that order.

sh-совместимость. При запуске баша по симлинку с sh в процессе логина исполняются /etc/profile and ~/.profile Стоит сравнить с п.1, в котором ~/.profile может не исполняться, при наличии ~/.bash_profile или ~/.bash_login !

4.

When invoked as an interactive shell with the name sh, bash looks for the variable ENV, expands its value if it is defined, and uses the expanded value as the name of a file to read and execute.

Аналог п.2 для sh-совместимого запуска. Запуск шелла как sh не читает определенные rc-файлы, только указанный в переменной ENV

A non-interactive shell invoked with the name sh does not attempt to read any other startup files.

Делаю вывод, что при запуске sh-скриптов (в частности тех, у которых шебанг #!/usr/bin/sh), никакие дополнительные rc-файлы не исполняются, используется только уже существующее окружение.