หน้าต่างหน้าจอ GNU เปลี่ยนชื่อความรำคาญ


13

ฉันชอบที่จะปรากฏขึ้นหน้าจอเซสชั่นที่มีการเชื่อมต่อ SSH ที่เปิดไว้ล่วงหน้าไปยังเซิร์ฟเวอร์หลักที่ฉันบริหารที่สำนักงาน ฉันตั้งชื่อหน้าต่างสั้น ๆ ให้กับแต่ละคนโดยทั่วไปคือ 2-4 ตัวอักษรดังนั้นพวกเขาจึงปรากฏในแถบสถานะหน้าจอของฉันพร้อมชื่อเหล่านั้น ดังนั้นฉันจะมีรายการหน้าจอที่ดูเหมือน

0$ jen1 ...

ตอนนี้เมื่อฉันต้องการเปลี่ยนไปใช้เซิร์ฟเวอร์นั้นและทำทุกอย่างที่ทำได้ง่าย ๆ เช่นดึงข้อมูลรายชื่อไดเรกทอรีชื่อนั้นก็ขยายตัวและกลายเป็น

0$ ghellings@devjenkins01

เกิดขึ้นเหมือนกันสำหรับแต่ละหน้าต่างทุกครั้งที่ฉันเข้าใช้งานทำให้แถบสถานะของฉันล้นความกว้างแนวนอนของหน้าจออย่างรวดเร็ว ฉันต้องการล็อคชื่อให้ถูกที่เวลาสร้างหน้าต่างและป้องกันไม่ให้แอปพลิเคชันไคลเอนต์เปลี่ยน ฉันไม่ต้องการให้แอปพลิเคชันใด ๆ สามารถเปลี่ยนชื่อหน้าต่างหน้าจอได้ (ค่อนข้างตรงข้ามกับที่ผู้คนจำนวนมากดูเหมือนจะถาม) สิ่งนี้จะยุ่งยากโดยเฉพาะอย่างยิ่งเมื่อฉันเปลี่ยนเป็นหน้าจอนั้นและเปิดไดเรกทอรีบางแห่ง จากนั้นชื่อหน้าจอจะกลายเป็น

 (0*$ ghellings@devjenkins01:/opt/somepackage/software/subdirectory)

ฉันต้องการให้เปลี่ยนสถานะการใช้งานเท่านั้นดังนั้นมันจะอ่านอย่างใดอย่างหนึ่งเสมอ

`0$ jen1` or `(0*$ jen1)`

มีวิธีใดบ้างที่ฉันจะล็อคชื่อหน้าต่างและป้องกันการเปลี่ยนแปลง

คำตอบ:


8

ฉันพบสิ่งนี้ตั้งแต่ต้นในการทดสอบ RHEL 7 และมันจะทำให้ฉันถั่ว สิ่งที่ฉันค้นพบคือมีการเปลี่ยนแปลง/etc/bashrcใน RHEL 7 ที่ทำให้การตั้งชื่อหน้าต่างในscreenและtmuxการเปลี่ยนแปลงเมื่อใดก็ตามที่คำสั่งเหมือนcdหรือlsถูกเรียกใช้ ในหน้าจอส่วน *)

if [ -e /etc/sysconfig/bash-prompt-screen ]; then
    PROMPT_COMMAND=/etc/sysconfig/bash-prompt-screen
else
## RHEL 7
    PROMPT_COMMAND='printf "\033k%s@%s:%s\033\\" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'

## RHEL 6
    PROMPT_COMMAND='printf "\033]0;%s@%s:%s\033\\" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'
fi

ดังนั้นใน RHEL 7 การเปลี่ยนแปลงจึงมาจาก] 0; ถึงkในส่วน PROMPT_COMMAND

ฉันคิดว่าจะเปิดบั๊ก แต่ก็ไม่เคยเข้าใกล้มันเลย ฉันมักจะเปลี่ยนมันด้วยตนเองในการติดตั้งใหม่

  • การเปลี่ยนแปลงที่ทำการอัพเดทการจัดรูปแบบ

6

ส่วนใหญ่คุณอาจPROMPT_COMMANDตั้งค่าตัวแปรเป็นอย่างอื่น

printf "\033k%s@%s:%s\033\\" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"

ฉันมีสิ่งนี้ในระบบ CentOS 7 ชุดนี้ชื่อเรื่องหน้าต่าง xterm หลังจากแต่ละคำสั่งซึ่งscreenใช้เป็นชื่อเรื่องหน้าต่าง

เพียงแค่ตั้งค่าPROMPT_COMMANDที่คุณ.bashrcแก้ไขหรือ/etc/bashrcไม่ตั้งค่า


ดูด้านล่างเพื่อทำให้สิ่งนี้ถาวรยิ่งขึ้น
คณิตศาสตร์

2

หากคุณตรวจสอบ.bashrcหรือ/etc/bashrcคุณอาจเห็นifหรือที่เกี่ยวข้องกับcasescreen

ในกรณีของฉันมันเป็นสิ่งที่ชอบ:

if [ -e /etc/sysconfig/bash-prompt-screen ]; then
    PROMPT_COMMAND=/etc/sysconfig/bash-prompt-screen
else
    PROMPT_COMMAND='printf "\033k%s@%s:%s\033\\" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'
fi

ภายใต้case $TERM inใน/etc/bashrcไฟล์

ปัญหาคือว่าผมไม่ได้มีไฟล์/etc/sysconfig/bash-prompt-screenอื่น ๆPROMPT_COMMANDภายใต้การelseถูกนำมาใช้

ฉันเพิ่งสร้าง/etc/sysconfig/bash-prompt-screenไฟล์เปล่าแล้วชื่อของหน้าต่างหน้าจอจะไม่เปลี่ยนแบบไดนามิกอีกต่อไป!


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