Понимание порядка сценария Bash

Я должен точно знать порядок, в котором скрипты запущены для интерактивной оболочки входа в систему. Порядок I "думает", что работает, ниже, но я определенно не уверен в его точности и хотел бы, чтобы кто-то подтвердил правильный порядок:

1./etc/profile , which then executes scripts in /etc/profile.d/*
2./etc/profile then executes ~/.bash_profile
3.~.bash_profile then invokes ~./bashrc
4.~/.bashrc then loads /etc/bash.bashrc

Во-вторых, я хочу, чтобы кто-то подтвердил порядок, в котором скрипты удара запущены для интерактивных оболочек невхода в систему. К настоящему времени мне записали его как:

1.~/.bashrc , which then loads /etc/bash.bashrc

Примечание: Хотя подобные вопросы задали на этом форуме прежде, те ответы не входят в глубину, которую я ищу для ответа на этот вопрос (они обычно останавливаются после того, как это говорит о загрузке .bash_profile),

0
задан 23 March 2019 в 08:24

1 ответ

Я не отвечу непосредственно, но дам Вам инструмент для нахождения ответа.

Во-первых, необходимо прочитать страницу справочника удара или страницу справочника оболочки. Это скажет Вам явно в том, какой порядок скрипт конфигурации запущен, быть этим вход в систему или нет, интерактивная оболочка или нет, и т.д...

Во-вторых, можно всегда находить его путем экспериментирования сами. В каждом сценарии можно выполнить любую команду, которую Вы любите. Таким образом для exemple, можно добавить себя строка как

echo "$$: Inside /etc/profile" >> /tmp/test_for_unstanding_bash_script_order.log

внутри /etc/profileнапример. $$ обозначает PID рабочей оболочки.

Затем Вы делаете то же для всех других файлов, меняя струну, записанную в журнал.

Затем Вы идете и смотрите в том файле журнала в том, какой порядок строки.

Затем необходимо отменить изменения.

Таким образом, вот то, что я вовлек себя, когда я добавляю те строки:

Для оболочки входа в систему:

8724: Inside /etc/bash.bashrc
8724: Inside /etc/profile.d/01-locale-fix.sh
8724: Inside /etc/profile.d/apps-bin-path.sh
8724: Inside /etc/profile.d/bash_completion.sh
8724: Inside /etc/profile.d/cedilla-portuguese.sh
8724: Inside /etc/profile.d/vte-2.91.sh
8724: Inside /etc/profile.d/xdg_dirs_desktop_session.sh
8724: Inside /etc/profile
8724: Inside ~/.bashrc

Примечание: Я добавил строку эха в конце каждого файла. Это могло дать неправильное распоряжение. Особенно в /etc/profile. Таким образом в /etc/profile, поместите строку наверху.

1
ответ дан 25 October 2019 в 23:48

Другие вопросы по тегам:

Похожие вопросы: