Jak uruchomić skrypt bez zamykania terminala?

69

Mam skrypt w pliku bla.shi jest on wykonywalny. Po kliknięciu skrypt jest uruchamiany, a okno jest zamykane. Chciałbym, żeby okno pozostało otwarte .

Coś jak polecenie cmd /k** commandw systemie Windows.

PS I nie chcesz używać pause, ale chcę, aby móc napisać więcej poleceń po skrypt został wykonany.

UAdapter
źródło

Odpowiedzi:

81

Umieść $SHELLna końcu skryptu:

alternatywny tekst

Mała wada: ponieważ gnome-terminalnie działa bashjako powłoka, będzie traktować ją jako aplikację i wyświetli ostrzeżenie o tym, gdy spróbujesz zamknąć terminal:

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

Nie znalazłem żadnego dobrego sposobu na ukrycie tego ostrzeżenia. Jeśli chcesz, możesz całkowicie wyłączyć, uruchamiając:

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

Nie dzieje się tak, jeśli używasz xtermzamiast gnome-terminal; powinno ci to przeszkadzać.

Stefano Palazzo
źródło
20
Możesz użyć exec $SHELLzamiast tego, $SHELLaby ostrzeżenie zniknęło bez zmiany ustawień.
Andrea Corbellini
1
Ale to rozwiązanie tworzy dodatkową powłokę / proces. Czy można tego uniknąć?
lucasvc
Nie wiem, jak to zrobić, nie. Problem polega na tym, że tracisz kontrolę nad standardowym We / Wy po zakończeniu pierwszego procesu bash, więc musiałbyś zrobić pewne sztuczki z demonem, który przechodzi na te uchwyty, co byłoby bardziej podatne na błędy i irytujące.
Stefano Palazzo
10

Korzystanie z terminalu Gnome

Używanie dołączania terminala gnome; bash na końcu ciągu polecenia i wywoływanie skryptu z opcją -c działa. Na przykład:

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

Robi to:

  1. otwiera terminal gnome
  2. wykonuje skrypt script.sh
  3. wyświetla monit bash po zakończeniu skryptu.

Możesz wyjść z okna terminalu gnome, zamykając okno lub wpisz polecenie exit po znaku zachęty. Lub możesz wpisać więcej poleceń zgodnie z żądaniem.

Karsvo
źródło
7

Jeśli masz dostęp do skryptu, możesz również dodać następujący kod na końcu:

read

Ten kod będzie czekał na wejście przed zamknięciem, więc terminal pozostanie otwarty, dopóki nie naciśniesz Enter.

jaycode
źródło
1
Często używam bashna końcu, ale readpozwala mi zamknąć okno tylko za pomocą ctrl+club enterzamiast ctrl+shift+wlub alt+f4. Jest to wygodne, gdy szybko iterujesz skrypt.
hsandt
5

Użyj opcji bash„s --init-fileopcja z tymczasowym rury:

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

Dawny:

bash --init-file <(echo './bla.sh')
Prem Anand
źródło
2

Działa użycie xtermi dołączanie ;bashna końcu łańcucha poleceń. Na przykład:

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

Robi to:

  1. otwiera xterm
  2. wykonuje skrypt script.sh
  3. wyświetla monit bash po zakończeniu skryptu.

Możesz wyjść z okna xterm, zamykając okno lub exitpisząc po znaku zachęty. Lub możesz wpisać więcej poleceń zgodnie z żądaniem.

Karsvo
źródło
1
xterm -e bash --rcfile bla.sh

Spowoduje to uruchomienie skryptu w nowym oknie, a nawet da ci kontrolę nad oknem po jego zakończeniu.

Jednak nowe okno nie załaduje się ~/.bashrcnormalnie, ponieważ bla.shzamiast tego uruchomiliśmy . Można temu zaradzić poprzez umieszczenie

. ~/.bashrc

na szczycie bla.sh

Steven Penny
źródło