nixp.ru v3.0

28 мая 2017,
воскресенье,
02:04:47 MSK

DevOps с компанией «Флант»
Yakovka написал 18 ноября 2015 года в 18:14 (1990 просмотров) Ведет себя неопределенно; открыл 1 тему в форуме, оставил 3 комментария на сайте.

Добрый день,
Как сделать alias, который первой командой открывая рабочую область (new shell) и посылает в нее какие то команды..

alias MYalias 'алиас_который_открывает_новый_шел; cd куда то; запускаем что то; »
алиас_который_открывает_новый_шел — срабатывает, а остальное нет…

Заранее благодарен

Дмитрий Шурупов

Это отнюдь не столь «прямолинейная» задача, т.к. alias продолжает всё выполнять в текущей оболочке — новую надо как-то выцеплять. Если запускается какой-то терминал, то у него быть соответствующие опции (например, аргумент -e у konsole). Если речь просто про Bash, то он умеет выполнять то, что передали через pipe:

shurup@lentop:~$ echo "cd / ; ls" | bash
bin  boot  cdrom  dev  etc  home ...
Yakovka

Я использую tcsh (другое не возможно) . Kak его выцыпить и послать ему команды?

Дмитрий Шурупов

В http://linux.die.net/man/1/tcsh вижу:

-c
Commands are read from the following argument (which must be present, and must be a single argument), stored in the command shell variable for reference, and executed. Any remaining arguments are placed in the argv shell variable.


Пробовали?

Yakovka

Не могли бы , пожалуйста, побаловать примером ?
Порядок действий : запускаю Команда1 (что то выполняет, открывает новый tcsh и что то выполняет в нем) , после Команда2 (cd куда то), и напоследок Команда3 (запуск программы с того нового tcsh).
Заранее благодарен.
Я новый чайник….

Дмитрий Шурупов

Должно быть что-то вроде:

tcsh -c "cd / ; ls"
Yakovka

Спасибо.
Не получилось ….
До запуска Команда1 ps показывает : один tcsh.
После запуска Команда1 ps: perl, tcsh, tcsh, tcsh.

Команда1 ,получается, запускает много чего…. Есть решение в этом случае ?