Как запустить скрипт без закрытия терминала?

50

У меня есть скрипт в файле bla.sh , и он является исполняемым. Когда я нажимаю на нем, сценарий выполняется и окно закрывается. Я бы хотел, чтобы окно оставалось открытым .

Что-то вроде команды cmd /k** command в Windows.

P.S. Я не хочу использовать pause , но я хочу, чтобы писать больше команд после выполнения скрипта.

    
задан UAdapter 06.01.2011 в 18:49
источник

7 ответов

59

Поместите $SHELL в конец вашего скрипта:

Небольшой недостаток: поскольку gnome-terminal не запускает bash в качестве оболочки, он будет рассматривать его как приложение и отображает предупреждение об этом, когда вы пытаетесь закрыть терминал

There is still a process running in this terminal
Closing the terminal will kill it.

Я не нашел хорошего способа скрыть это предупреждение. Если вы хотите, вы можете полностью отключить его, выполнив:

gconftool --set /apps/gnome-terminal/global/confirm_window_close --type boolean false

Это не происходит, если вы используете xterm вместо gnome-terminal; если это вас беспокоит.

    
ответ дан Stefano Palazzo 06.01.2011 в 19:51
источник
10

Использование терминала Gnome

Использование добавления gnome-terminal, bash в конце командной строки и вызов скрипта с параметром -c. Например:

gnome-terminal -e "bash -c ~/script.sh;bash"

Это делает следующее:

  1. открывает gnome-terminal
  2. выполняет скрипт script.sh
  3. показывает приглашение bash после завершения скрипта.

Вы можете выйти из окна терминала gnome, закрыв окно или введите exit в командной строке bash. Или вы можете ввести больше команд по запросу.

    
ответ дан Karsvo 15.08.2012 в 21:06
6

Если вы используете xterm , используйте -hold .     

ответ дан Ramy 29.01.2013 в 09:54
4

Используйте bash --init-file с временным каналом:

bash --init-file <(echo './<script_name>')

Пример:

bash --init-file <(echo './bla.sh')
    
ответ дан Prem Anand 20.03.2015 в 10:58
2

Если у вас есть доступ к скрипту, вы также можете добавить следующий код в конце:

read

Этот код будет ждать ввода перед закрытием, поэтому терминал останется открытым до тех пор, пока вы не нажмете Enter.

    
ответ дан jaycode 30.03.2017 в 08:35
1

Использование xterm и добавление ;bash в конце командной строки. Например:

xterm -e "bash ~/script.sh;bash"

Это делает следующее:

  1. открывает xterm
  2. выполняет скрипт script.sh
  3. показывает приглашение bash после завершения скрипта.

Вы можете выйти из окна xterm, закрыв окно или наберите exit в командной строке bash. Или вы можете ввести больше команд по запросу.

    
ответ дан Karsvo 15.08.2012 в 02:34
1
xterm -e bash --rcfile bla.sh

Это запустит скрипт в новом окне и даже даст вам контроль над окном после его завершения.

Однако новое окно не загрузит ~/.bashrc как обычно, так как вместо этого мы использовали bla.sh . Это можно исправить, поставив

. ~/.bashrc

вверху bla.sh

    
ответ дан Steven Penny 10.03.2014 в 05:28