Запуск новой оболочки bash из оболочки bash
Я хотел бы запустить программу из оболочки bash. Когда программа запускается, она доминирует над всей оболочкой, поэтому я хотел бы начать новую оболочку и запустить программу оттуда. В настоящее время я делаю:
gnome-terminal -x "cd Dropbox; program_name"
Однако это дает мне ошибку Не удалось выполнить дочерний процесс, такого файла или каталога. Я считаю, что это потому, что у нового терминала нет времени для инициализации. Как я могу это исправить?
Ответы
Ответ 1
Я признаю, что это не отвечает на ваш вопрос, но я думаю, что он решает вашу проблему.
Почему бы просто не использовать &
, чтобы отправить его на задний план. Вы можете увидеть, будет ли он работать с jobs
и вернуть его на передний план с помощью fg
, вы также можете отправить его обратно на задний план, сначала остановив его с помощью Ctrl + Z then bg
Пример, чтобы попробовать.
> sleep 20 &
> jobs
> fg [jobNumber]
[Ctrl-Z]
> jobs
> bg [jobNumber]
> jobs
Ответ 2
Try:
bash -c 'gnome-terminal -x cd /absolute-path && program_name'
Ответ 3
используйте абсолютный путь к программе или cd перед вызовом gnome-terminal. И вам нужно a и положить его в фоновом режиме.
cd Dropbox; gnome-terminal -x "program_name" &
Ответ 4
Попробуйте screen. Его простая брограмма, позволяющая одновременно отслеживать несколько оболочек. Вы можете перемещаться по каждой открытой оболочке и даже покидать сеанс и снова подключаться позже.
Ответ 5
Попробуйте добавить "&" в конце вашей команды, например:
gnome-terminal &
Я не знаю, работает ли он с gnome-terminal, но он хорошо работал с mrxvt.
Ответ 6
/bin/bash -c "/path/to/prog"
Но загляните в команду sleep
.