การเปิดหลายแท็บด้วย gnome-terminal


16

ฉันกำลังพยายามสร้างคำสั่งที่จะเปิดบริการ 3 รายการจาก Rails stack, Rails s, spork และ autotest ฉันสามารถเรียกใช้คำสั่งเหล่านี้ทีละรายการโดยเปิดเทอร์มินัล 3 เครื่องไปที่โฟลเดอร์แอพและเรียกใช้งาน ฉันสามารถเปิด 3 แท็บใหม่และเรียกใช้คำสั่งในแต่ละแท็บได้

ปัญหาคือพวกเขาล้มเหลวเมื่อฉันพยายามเปิดแท็บผ่านทาง gnome-terminal เช่น:

gnome-terminal --tab --title="rails s" -e "rails s" --tab --title="spork" -e "spork" --tab --title="autotest" -e "autotest"

ข้อผิดพลาด (สำหรับ spork และ autotest):

There was an error creating the child process for this terminal
Failed to execute child process "spork" (No such file or directory)

น่าแปลกที่มันใช้งานได้กับ 'rails s' (แท็บแสดงเซิร์ฟเวอร์ที่กำลังทำงาน)

ความคิดใด ๆ

คำตอบ:


9

ด้านล่างคือคำตอบจากstackoverflow.com

  1. เพิ่ม a eval "$BASH_POST_RC"ถึงท้าย. bashrc ของคุณ

  2. ตั้งค่าBASH_POST_RCตัวแปรสภาพแวดล้อมสำหรับแต่ละแท็บให้เป็นคำสั่งที่คุณต้องการใช้งานเช่น: gnome-terminal --working-directory="/home/zardoz/projects/my_rails_app" --tab -e 'bash -c "export BASH_POST_RC=\"rails server\"; exec bash"' --tab -e 'bash -c "export BASH_POST_RC=\"autotest\"; exec bash"'


15

การเรียกใช้gnome-terminalสามครั้งและการรวมคำสั่งเข้าด้วยกัน&& จะไม่ทำงานและแท็บจะไม่ปรากฏในเทอร์มินัลเดียวกันและแน่นอนคุณจะต้องออกจากเทอร์มินัลแรกเพื่อให้หน้าจอถัดไปปรากฏ

วิธีที่จะทำให้แน่ใจว่าแท็บทั้งหมดของคุณเปิดในอินสแตนซ์เดียวของgnome-terminalทั้งหมดในเวลาเดียวกันคือการใช้--tab-with-profile=PROFILENAMEสวิตช์ ในคำสั่งด้านล่างคุณสามารถปล่อยให้คำสั่งแรกgnome-terminal --tabเหมือนว่ามันเป็นหน้าต่างแรกที่จะสร้าง; ตอนนี้สิ่งที่คุณต้องรู้คือโปรไฟล์ที่คุณใช้และคุณสามารถใช้--tab-with-profile=YourProfileเพื่อเรียกใช้คำสั่งอื่น ๆ และพวกเขาจะปรากฏขึ้นพร้อมกันในเทอร์มินัลดั้งเดิมที่เปิดอยู่

นี่คือคำสั่งของคุณแก้ไข:

gnome-terminal --tab --title="rails s" -e "rails s" --tab-with-profile=Default --title="spork" -e "spork" --tab-with-profile=Default --title="autotest" -e "autotest"

(สำหรับผู้อ่านในอนาคต: แทนที่ชื่อโปรแกรมที่กำหนดหลังจาก-eเพื่อทดสอบบรรทัดคำสั่งที่ให้ไว้ที่นี่โปรดจำไว้ว่าเป้าหมายของคุณ-eจะต้องได้รับการติดตั้งและใน$PATHสำหรับสิ่งที่ไม่ได้$PATHใช้เส้นทางที่แน่นอนเช่นเช่น/opt/mike/program)

อย่าลืมระบุโปรไฟล์จริงที่คุณใช้สำหรับ--tab-with-profileสวิตช์ การร้องขอครั้งแรกของgnome-terminalต้องใช้--tabและส่วนที่เหลือ--tab-with-profileทั้งหมด gnome-terminalด้วยวิธีนี้มันควรจะเป็นไปได้ที่จะเปิดเป็นจำนวนมากของแท็บทั้งหมดในกรณีเดียวกันของ

ค้นหาโปรไฟล์ที่คุณกำลังใช้อยู่โดยคลิกขวาgnome-terminalและดูโปรไฟล์และจะมีเครื่องหมายระบุตำแหน่งที่คุณกำลังใช้งานอยู่:

ป้อนคำอธิบายรูปภาพที่นี่

ไปที่การตั้งค่าโปรไฟล์สำหรับข้อมูลเพิ่มเติมและตรวจสอบชื่อของโปรไฟล์

สำหรับข้อมูลเพิ่มเติมโปรดดูที่man gnome-terminalและอูบุนตู manpages ออนไลน์


หมายเหตุ :

หากคุณมีปัญหาในการเปิดโปรแกรมด้วยgnome-terminalเพิ่มตำแหน่ง$PATHหรือสร้าง symlink และวางไว้ใน$PATHตำแหน่งหรือ (สิ่งที่มีประโยชน์มากที่นี่): สร้างสคริปต์ตัวห่อ bash ที่เรียบง่ายและโทรไปที่gnome-terminalบรรทัดคำสั่งด้านบน (คุณต้องเรียกมันด้วยพา ธ สัมบูรณ์: เช่น/location/of/scriptไม่ใช่ชื่อของมัน)

ตัวอย่างเช่น:

#!/bin/bash
cd $HOME/.rvm/gems/ruby-2.0.0-p0/bin 
spork
exit 0

จากนั้นตั้งชื่อสคริปต์ทำให้สามารถเรียกใช้งานได้และเรียกใช้ในgnome-terminalบรรทัดคำสั่งด้านบน ทำเช่นนี้สำหรับโปรแกรมที่ไม่ใช่ repo ทั้งหมดที่เป็นปัญหา


ฉันจะรู้โปรไฟล์ได้อย่างไร? (ฉันลองด้วยค่าเริ่มต้นชื่อผู้ใช้ของฉันและ ~ / .profile)
Manuel

มันบอกว่า Default แต่ฉันได้รับข้อผิดพลาดเดียวกันโดยใช้ --tab-with-profile = Default
Manuel

@Manuel ความเป็นไปได้อื่นคือคำสั่งเป้าหมายที่ไม่ได้อยู่ในคุณ$PATHระบุตำแหน่งของsporkและคำสั่งอื่น ๆ ด้วยเส้นทางที่แน่นอน

คำสั่งที่ฉันใช้คือ gnome-terminal --tab --title = "rails s" -e "rails s" --tab-with-profile = ค่าเริ่มต้น --title = "spork" -e "spork" - tab-with-profile = Default --title = "autotest" -e "autotest" (คัดลอก / วางจากคำตอบของคุณ) เกี่ยวกับ $ PATH หากเป็นปัญหาแล้วทำไมมันถึงทำงานบนแท็บที่เปิดผ่านเมนู
Manuel

@Manuel ในขณะที่คุณกล่าวว่าในคำถามของคุณคุณต้องไปที่ "โฟลเดอร์แอป" $PATHและเรียกพวกเขาจากที่นั่นซึ่งหมายความว่าพวกเขาไม่ได้อยู่ใน วิธีการในคำตอบคือวิธีที่ฉันใช้เพื่อเรียกใช้โปรแกรมบรรทัดคำสั่งที่ติดตั้งในที่เก็บทั้งหมดในแท็บต่าง ๆ ในgnome-terminalหน้าต่างเดียวกันและใช้งานได้เสมอ

0

gnome-terminal --tab -- sh -c "python3 'test.py' ; bash"

รหัสนี้เปิดแท็บใหม่ในเทอร์มินัลที่ใช้สคริปต์ไพ ธ อนและเมื่อสิ้นสุดแท็บใหม่นี้จะไม่ปิดเพราะฉันเพิ่ม 'ทุบตี' ในตอนท้ายของรหัสนี้ ...

ถ้าคุณต้องการมันหลาย ๆ ครั้งใส่มันลงในสักครู่ในสคริปต์ทุบตีของคุณ

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