Запуск новой оболочки bash из оболочки bash - PullRequest
14 голосов
/ 02 июня 2011

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

gnome-terminal -x "cd Dropbox; program_name"

Однако, которые дают мне ошибку Не удалось выполнить дочерний процесс, нет такого файла или каталога.Я верю в это, потому что у нового терминала нет времени на инициализацию.Как я могу это исправить?

Ответы [ 6 ]

9 голосов
/ 02 июня 2011

Попробуйте:

bash -c 'gnome-terminal -x cd /absolute-path && program_name'
9 голосов
/ 02 июня 2011

Я признаю, что это на самом деле не отвечает на ваш вопрос, но я думаю, что это решает вашу проблему.

Почему бы просто не использовать &, чтобы отправить его на задний план.Вы можете увидеть, работает ли он с jobs и вернуть его на передний план с помощью fg, вы также можете отправить его обратно на фон, сначала остановив его с помощью Ctrl + Z затем bg

Пример попробовать.

> sleep 20 &
> jobs
> fg [jobNumber]
[Ctrl-Z]
> jobs
> bg [jobNumber]
> jobs
1 голос
/ 02 июня 2011

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

1 голос
/ 02 июня 2011

используйте абсолютный путь к программе или коду перед вызовом gnome-терминала. И вам нужно &, чтобы положить его в фоновом режиме.

cd Dropbox; gnome-terminal -x "program_name" &
0 голосов
/ 02 июня 2011
/bin/bash -c "/path/to/prog"

Но посмотрите также на команду sleep.

0 голосов
/ 02 июня 2011

Попробуйте добавить «&» в конце вашей команды, например:

gnome-terminal &

Я не знаю, работает ли он с gnome-терминал, но он хорошо работал с mrxvt.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...