Код отслеживания Google Analytics.

Jul 28, 2008

Screen environment (Starting bash in specified directory)

Постоянное использование screen поставило передо мной новую задачку - стартовать N shell-сессий в заданном каталоге (отличном от ${HOME}). Проблема, однако, "сразу и просто" не решилась.



Более того - я не знаю правильно ли найденное мною решение и если у кого-то, кто случайно забредёт сюда, есть хотя бы идея comme il faut, то прошу вас оставить свой комментарий.
Итак, понятно, что нужно использовать команду screen в ~/.screenrc:
$ cat ~/.screenrc
screen 0 /bin/bash --rcfile /home/user/.bashrc.work -i
...
screen 9 /bin/bash --rcfile /home/user/.bashrc.work -i

Однако например в Cygwin мне требуется запустить bash с ключом --login чтобы он прочёл перед стартом все инициализирующие файлы. Здесь --login подавит использование --rcfile и потому в самом /home/user/.bashrc.work нужно проделать все необходимые операции:
$ cat ~/.bashrc.work
[ -f /etc/profile ] && source /etc/profile
[ -f ~/.bash_profile ] && source ~/.bash_profile

cd /нужный/нам/каталог

Теперь при запуске screen мы получим 10 консолей в определённом месте (/нужный/нам/каталог), а все другие консоли, которые мы создадим будут давать нам стандартный shell в ${HOME}. Для запуска rxvt со screen я использую следующую команду:
C:\cygwin\bin\rxvt.exe -fn "Courier New-15" -e /usr/bin/screen

Для более тонкой работы можно, например, анализировать значение какой-нибудь переменной.

No comments: