คำตอบของændrükนั้นใช้ได้ แต่อาจเป็นเรื่องเล็กน้อยสำหรับงาน
นี่คือสคริปต์ที่เขียนสคริปต์ตามอาร์กิวเมนต์
#!/bin/sh
# terminal-plus-command: start a subordinate terminal which runs
# the interactive shell after first running the command arguments
tmpscript=/tmp/tmpscript.$$
echo "#!$SHELL" > $tmpscript
echo "$@" >> $tmpscript
echo exec "$SHELL" >> $tmpscript
chmod +x $tmpscript
gnome-terminal --command $tmpscript
rm -f $tmpscript
หากคุณไม่ได้ทำการเขียนโปรแกรมเชลล์มากนักดูเหมือนว่าจะมีเวทย์มนตร์มากกว่าที่เคยเป็น อันดับแรกฉันตั้งชื่อไฟล์ชั่วคราวสำหรับเก็บสคริปต์โดยที่$$
ID กระบวนการของเชลล์ใช้งานสคริปต์นี้ /tmp/something.$$
อุปมาถูกนำมาใช้ในกรณีที่สองกรณีของสคริปต์นี้จะดำเนินการในเวลาเดียวกันพวกเขาจะไม่พยายามที่จะใช้แฟ้มชั่วคราวเดียวกัน
ตัวแปร$SHELL
ถูกตั้งค่าเป็นชื่อของเชลล์ที่รันสคริปต์ หากคุณใช้ / usr / bin / bash สมมุติว่าคุณต้องการให้มินิสคริปต์ใช้งาน
"$@"
เป็นสำนวนเปลือกสำหรับ "สอดแทรกข้อโต้แย้งของฉันทั้งหมดอ้างพวกเขาหากจำเป็น" ไวยากรณ์ผิดปกตินี้ทำให้เกิด
script.sh 'my file' your\ file
เพื่อแก้ไขข้อโต้แย้งเป็นสององค์ประกอบ
"my file" "your file"
แทนที่จะเป็นสี่ที่$@
จะให้ผล
"my" "file" "your" "file"
บรรทัดสุดท้ายของสคริปต์จะจัดให้มี gnome-terminal เพื่อเริ่มใช้งาน mini-script จากนั้นเริ่มต้นเชลล์แบบโต้ตอบ เมื่อออกจากเทอร์มินอล gnome สคริปต์ชั่วคราวจะถูกลบออกเพราะการทิ้งขยะไม่ได้เป็นการกระทำ
บรรทัดสุดท้ายไม่ได้เป็นส่วนหนึ่งของ mini-script มันแสดงให้เห็นว่า mini-script ทำงานได้ ถ้าสคริปต์ 11 บรรทัดข้างต้นอยู่ในไฟล์ที่เรียกว่าrt.sh
แล้วchmod
ทำให้มันปฏิบัติการและจากนั้นก็จะถูกดำเนินการ
$ chmod +x rt.sh && ./rt.sh echo hello world
ผลลัพธ์ทั้งหมดนี้จะเป็นเทอร์มินอล gnome ที่เริ่มต้นขึ้น
hello world
ในบรรทัดแรกและจากนั้นเริ่มเปลือกโต้ตอบ:
msw@myhost:~$