ฉันจะทำให้ OS X ตั้งค่าชื่อเทอร์มินัลกลับไปเป็นชื่อดั้งเดิมเมื่อกลับมาจาก ssh ได้อย่างไร


12

เริ่มต้นที่ OS X ฉันเข้าสู่ foo (กล่อง Linux) ชื่อสถานีของฉันเปลี่ยนเป็น foo ฉันแล้ว ssh ลงในแถบ (กล่อง Linux อื่น) ชื่อสถานีของฉันเปลี่ยนเป็นแถบ ฉันออกจากระบบ ชื่อสถานีของฉันเปลี่ยนเป็น foo ฉันออกจากระบบ foo ชื่อเทอร์มินัลของฉันยังคงอยู่ foo (แทนที่จะเปลี่ยนกลับไปเป็นชื่อเดิม) เห็นได้ชัดว่าปัญหาไม่ได้อยู่กับเทอร์มินัลเนื่องจากมันทำงานอย่างถูกต้องเมื่อออกจากกล่อง Linux กลับไปที่กล่อง Linux มันอาจไม่ใช่ ssh เพราะฉันมีปัญหาเดียวกันกับกลุ่ม ในใจของฉันที่ทิ้งเปลือกหอย ฉันกำลังใช้ BASH เมื่อมองดูสภาพแวดล้อมฉันไม่เห็นความแตกต่างมากมายระหว่างกล่อง Linux กับกล่อง OS X ของฉัน ทั้งสองใช้ระยะของ xterm

คำตอบ:


14

เพิ่ม

export PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD/$HOME/~}\007"'

เพื่อ.bash_profileแก้ไขปัญหาของฉัน

ดูเหมือนว่าสตริงในPROMPT_COMMANDการดำเนินการทุกครั้งที่มีการแจ้งให้แสดง จากหน้าคน:

PROMPT_COMMAND

หากตั้งค่าค่าจะถูกดำเนินการเป็นคำสั่งก่อนที่จะออกแต่ละพรอมต์หลัก


3
คุณไม่น่าจะลงชื่อเข้าใช้ OS X ผ่านทางคอนโซล แต่อาจเกิดขึ้นได้ เพื่อป้องกันปัญหาที่เกิดขึ้นในเหตุการณ์นั้นฉันได้รวมสิ่งนี้ไว้ในcase "$TERM" in xterm*|rxvt*)ข้อตกลงประเภทหนึ่ง ฉันคิดว่าฉันมีความคิดเดิมจากที่นี่: tldp.org/HOWTO/Bash-Prompt-HOWTO/ …
Telemachus

โอ้นอกจากนี้ฉันคิดว่ามันจะดีกว่าที่จะเข้าสู่การตั้งค่าของ Terminal.app (การตั้งค่า -> การตั้งค่า -> หน้าต่าง) และลบทุกอย่างที่มันพยายามเพิ่มลงในแถบชื่อเรื่อง แต่ ymmv
Telemachus

ผมใช้iTerm.appไม่ได้Terminal.appแล้วและมันก็ใช้งานได้ คุณมีประเด็นเกี่ยวกับเทอร์มินัลจริง กล่อง Linux ของฉันมีเพียงแค่เช็คดังนั้นฉันจะเพิ่มลงในโปรไฟล์ของฉันขอบคุณ
Chas Owens

0

ฉันพบวิธีแก้ไขปัญหาที่ดีกว่าสำหรับปัญหานี้แล้ว OSX ใช้การกำหนดค่าทั่วทั้งระบบนี้:

PROMPT_COMMAND="update_terminal_cwd${PROMPT_COMMAND:+; $PROMPT_COMMAND}"

ฟังก์ชั่นจะมีการประกาศในupdate_terminal_cmd /etc/bashrc_Apple_Terminalดังนั้นถ้าคุณไม่ต้องการที่จะทำลายการตั้งค่าของคุณโดยเทอร์มิรีเซ็ตPROMPT_COMMANDคุณสามารถเพิ่มบรรทัดเหล่านี้ไปยังจุดสิ้นสุดของคุณ~/.profileหรือ~/.bashrc:

my_update_terminal_cwd() {
    update_terminal_cwd # call system wide function
    printf '\e]0;\a'    # reset additional title after SSH session
}

PROMPT_COMMAND="my_update_terminal_cwd${PROMPT_COMMAND:+; $PROMPT_COMMAND}"

ตัวอย่าง:

ก่อนเซสชัน SSH

กำลังดำเนินการเซสชัน SSH - ตั้งชื่อเป็นชื่อโฮสต์ระยะไกล

หลังจากเซสชัน SSH - แก้ไขชื่อแล้ว

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