วิธีรันสคริปต์โดยไม่ปิดเทอร์มินัล


69

ฉันมีสคริปต์ในไฟล์bla.shและสามารถเรียกใช้งานได้ เมื่อฉันคลิกที่มันสคริปต์จะถูกดำเนินการและปิดหน้าต่าง ฉันต้องการหน้าต่างที่เปิดอยู่

สิ่งที่ต้องการคำสั่งcmd /k** commandใน Windows

ป.ล. ฉันไม่ต้องการใช้pauseแต่ฉันต้องการเขียนคำสั่งเพิ่มเติมหลังจากรันสคริปต์

คำตอบ:


81

ใส่$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 มันควรจะรบกวนคุณ


20
คุณสามารถใช้exec $SHELLแทนเพียง$SHELLเพื่อให้คำเตือนหายไปโดยไม่เปลี่ยนการตั้งค่า
Andrea Corbellini

1
แต่วิธีนี้สร้างเชลล์ / กระบวนการเพิ่มเติม สามารถหลีกเลี่ยงได้ไหม
lucasvc

ฉันไม่รู้วิธีการทำเช่นนี้ไม่ ปัญหาคือว่าคุณสูญเสียการจัดการของคุณใน IO มาตรฐานเมื่อกระบวนการทุบตีครั้งแรกเสร็จสิ้นดังนั้นคุณจะต้องทำเล่ห์เหลี่ยมบางอย่างกับภูตที่ผ่านไปจับเหล่านี้ซึ่งจะเป็นข้อผิดพลาดได้ง่ายขึ้นและน่ารำคาญมากขึ้น
Stefano Palazzo

10

ใช้สถานี Gnome

ใช้ gnome-terminal ต่อท้ายทุบตีในตอนท้ายของสตริงคำสั่งและเรียกใช้สคริปต์ด้วยตัวเลือก -c ทำงาน ตัวอย่างเช่น:

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

นี่ทำสิ่งต่อไปนี้:

  1. เปิด gnome-terminal
  2. รันสคริปต์ script.sh
  3. แสดง bash prompt หลังจากที่สคริปต์เสร็จสิ้น

คุณสามารถออกจากหน้าต่าง gnome-terminal ได้โดยปิดหน้าต่างหรือพิมพ์ exit ที่ bash prompt หรือคุณสามารถพิมพ์คำสั่งเพิ่มเติมตามที่ร้องขอ



7

หากคุณมีสิทธิ์เข้าถึงสคริปต์คุณอาจเพิ่มรหัสต่อไปนี้ในตอนท้าย:

read

รหัสนั้นจะรออินพุตก่อนปิดดังนั้นเทอร์มินัลจะยังคงเปิดอยู่จนกว่าคุณจะกด Enter


1
ผมมักจะใช้bashในตอนท้าย แต่readช่วยให้ฉันเพื่อปิดหน้าต่างเพียงกับctrl+cหรือenterแทนหรือctrl+shift+w alt+f4สะดวกเมื่อคุณวนซ้ำอย่างรวดเร็วในสคริปต์ของคุณ
hsandt


2

การใช้xtermและผนวก;bashท้ายการทำงานของสตริงคำสั่ง ตัวอย่างเช่น:

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

นี่ทำสิ่งต่อไปนี้:

  1. เปิด xterm
  2. รันสคริปต์ script.sh
  3. แสดง bash prompt หลังจากที่สคริปต์เสร็จสิ้น

คุณสามารถออกจากหน้าต่าง xterm ได้โดยปิดหน้าต่างหรือพิมพ์exitที่ bash prompt หรือคุณสามารถพิมพ์คำสั่งเพิ่มเติมตามที่ร้องขอ


1
xterm -e bash --rcfile bla.sh

สิ่งนี้จะเรียกใช้สคริปต์ในหน้าต่างใหม่และแม้กระทั่งให้คุณควบคุมหน้าต่างได้หลังจากที่เสร็จสิ้น

อย่างไรก็ตามหน้าต่างใหม่จะไม่โหลด~/.bashrcตามปกติเนื่องจากเราทำงานbla.shแทน สามารถแก้ไขได้โดยการใส่

. ~/.bashrc

ที่ด้านบนของ bla.sh

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.