Подтвердить что ты не робот

Запуск новой оболочки bash из оболочки bash

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

gnome-terminal -x "cd Dropbox; program_name"

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

4b9b3361

Ответ 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.