LINUX.ORG.RU

alex@localhost $ cat ~/.bash_profile 
. ~/.bashrc
. ~/.bash_aliases
Deleted
()

Из man bash:

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

Если у тебя login shell, то:

it looks for ~/.bash_profile, ~/.bash_login, and ~/.profile, in that order

Читайте маны, они рулез!

Citramonum ★★★
()

Что-то у меня при логине не обрабатывается ~/.bashrc

он и не должен обрабатываться при логине.

emulek
()

BASH_ENV для не интерактивного режима (выполнение скрипта).

mky ★★★★★
()
Ответ на: комментарий от Citramonum

У вас цитата очевидно из мана, который на opennet, а не того что выводится по команде man bash в Slackware. В этом дистрибутиве очевидно какая-то своя сборка bash.

Собственно, заинтересовался потому как нужно куда-то прописать запуск программ, выполняемых при логине, в частности screen. Не раз спрашивал это на форумах и много чего перечитал, но ответа пока нет.

sunny1983 ★★★★★
() автор топика
Ответ на: комментарий от sunny1983

У вас цитата очевидно из мана, который на opennet, а не того что выводится по команде man bash в Slackware.

Моя цитата из man bash в Slackware64 14.1.

В этом дистрибутиве очевидно какая-то своя сборка bash.

Что за глупости...

Citramonum ★★★
()
Ответ на: комментарий от sunny1983

У вас цитата очевидно из мана, который на opennet, а не того что выводится по команде man bash в Slackware. В этом дистрибутиве очевидно какая-то своя сборка bash.

ЩИТО?

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. The --noprofile option may be used when the shell is started to inhibit this behavior.

When a login shell exits, bash reads and executes commands from the file ~/.bash_logout, if it exists.

When an interactive shell that is not a login shell is started, bash reads and executes com- mands from ~/.bashrc, if that file exists. This may be inhibited by using the --norc option. The --rcfile file option will force bash to read and execute commands from file instead of ~/.bashrc.

slackware-current

emulek
()
Ответ на: комментарий от emulek

Ты понятия «логин» и «запуск» отличаешь между собой? Кстати тема моя как раз о том, что .bashrc вообще не обрабатывается.

sunny1983 ★★★★★
() автор топика
Ответ на: комментарий от beriya

Ну нужно же сначала проверить, что это это начальный командный интерпритатор

sunny1983 ★★★★★
() автор топика
Ответ на: комментарий от sunny1983

для тех, кто в танке

Ты понятия «логин» и «запуск» отличаешь между собой?

УМВР

Кстати тема моя как раз о том, что .bashrc вообще не обрабатывается.

и не должен.

emulek
()
Ответ на: комментарий от beriya

Пропиши в ~/.bash_profile:

можно просто: ln -svf ~/.bash{rc,_profile}

emulek
()
Ответ на: комментарий от sunny1983

вот что я вижу:

When an interactive shell that is not a login shell is started, bash reads and executes com- mands from ~/.bashrc, if that file exists. This may be inhibited by using the --norc option. The --rcfile file option will force bash to read and execute commands from file instead of ~/.bashrc.

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. The --noprofile option may be used when the shell is started to inhibit this behavior.

что тебе не ясно? Я тебе даже выделил. Когда ты входишь в screen, это interactive login shell. И bashrc НЕ запускается.

emulek
()
Ответ на: комментарий от emulek

Ну иногда бывает что-то не ясно, когда формулировка странная. Как это понял я, если переформулировать:
1) Есть 3 режима работы bash: interactive login shell, interactive not login shell и non-interactively.
2) В режиме interactive login shell bash запускается при логине. В этом режиме сначала обрабатывается /etc/profile, затем ~/.bash_profile, затем ~/.bash_login, затем ~/.profile. Не понимаю зачем так много, у них наверное назначение разное.
3) В режиме interactive not login shell bash запускается в эмуляторе терминала. В этом режиме обрабатывается только файл ~/.bashrc. И непонятно каким образом тут раскрашивать консоль и задавать алиасы, если /etc/profile не обрабатывается, а все эти данные в нём.
4) В режиме non-interactively bash запускается при запуске скрипта. В этом режиме обрабатывается файл, заданный в переменной BASH_ENV.

sunny1983 ★★★★★
() автор топика
Последнее исправление: sunny1983 (всего исправлений: 2)
Ответ на: комментарий от sunny1983

2) В режиме interactive login shell bash запускается при логине. В этом режиме сначала обрабатывается /etc/profile, затем ~/.bash_profile, затем ~/.bash_login, затем ~/.profile. Не понимаю зачем так много, у них наверное назначение разное.

да, это основной интерактивный режим.

В режиме interactive not login shell bash запускается в эмуляторе терминала.

нет. Это вспомогательный режим. Например bash из bash. Но в последние годы стал основным, т.к. все логинятся в KDM и проч. Но всё равно, считается, что все автозагрузки уже отработали.

emulek
()
Ответ на: комментарий от emulek

нет. Это вспомогательный режим. Например bash из bash. Но в последние годы стал основным, т.к. все логинятся в KDM и проч. Но всё равно, считается, что все автозагрузки уже отработали.

ну так bash, запущеный из эмулятора терминала - это первый или второй режим. У меня при запуске screen консоль становится чёрно-белой.

sunny1983 ★★★★★
() автор топика
Ответ на: комментарий от sunny1983

ну так bash, запущеный из эмулятора терминала - это первый или второй режим. У меня при запуске screen консоль становится чёрно-белой.

откуда я знаю, что там у вас?

Hint: первой строчкой в каждом файле пропишите: echo "меня зовут XXX"

emulek
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.