LINUX.ORG.RU

Игнорируется .bashrc

 , ,


0

1

Все время пользовался i3wm. По необходимости воткнул xfce4 и gdm. В результате, если залогиниться в сессию с i3, то все, что есть в .bashrc игнориться с какого-то перепугу. Аккуратно настроенные доп. скрипты в ~/.bin перестали отображаться в dmenu.

Не могу понять почему так.

Ответ на: комментарий от Quadmonster

А в ~/.bashrc что? Где он? Как логинился без GDM?

Deleted
()

Не могу понять почему так.

Потому что так и должно быть. Какое вообще отношение файл инициализации _интерактивного_ шелла может иметь к логину?

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

Вообще-то башу всё равно откуда грузить, из .bashrc или .bash_login — он отсорсит первый попавшийся.

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 exe‐
       cutes commands from the first one that exists and is readable.

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

Про .bashrc здесь ничего не сказано(хотя он обычно грузится из .bash_profile). ТС, у тебя ~/.bash_profile вообще есть? :-)

Pinkbyte ★★★★★
()

When an interactive shell that is not a login shell is started, bash reads and executes commands 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 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 exe- cute. Bash behaves as if the following command were executed: if [ -n «$BASH_ENV» ]; then . «$BASH_ENV»; fi but the value of the PATH variable is not used to search for the file name.

...

Bash attempts to determine when it is being run with its standard input connected to a network connection, as when exe- cuted by the remote shell daemon, usually rshd, or the secure shell daemon sshd. If bash determines it is being run in this fashion, it reads and executes commands from ~/.bashrc, if that file exists and is readable. It will not do this if invoked as sh. The --norc option may be used to inhibit this behavior, and the --rcfile option may be used to force another file to be read, but rshd does not generally invoke the shell with those options or allow them to be specified.

да, в WM bash обычно вообще «никак» не входит, команда exec ПОДМЕНЯЕТ процесс bash'а на процесс оболочки.

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

т.е. когда запущено всё, то никакого bash'а и нету:

  |-kdm,2222 -nodaemon
  |   |-X,2308 -br -novtswitch -quiet :0 vt7 -nolisten tcp -auth /var/run/xauth/A:0-ZOYXub
  |   `-kdm,2314                   
  |       `-icewm-session,2337,user
  |           |-icewm,2373 --restart
  |           |   |-dolphin,28649

тут kdm от root'а запустил icewm-session уже от пользователя, хотя на самом деле bash там тоже пролетал, но он сдулся.

Ну а программы из startup'а так вообще напрямую init «запущены», т.е. вообще не в курсе что там кто ставил.

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

что, всех четырёх нет?

А вообще, такой скрипт можно запустить в стартовом скрипте WM'а. Только надо обязательно командой source, а то не взлетит.

И конечно переменные надо export'ировать.

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