Cửa sổ GNU màn hình đổi tên phiền toái


13

Tôi muốn bật lên một phiên màn hình với các kết nối SSH được mở trước tới các máy chủ chính mà tôi quản trị tại văn phòng. Tôi đặt cho mỗi cửa sổ này một tên rất ngắn gọn, thường là 2-4 ký tự, để chúng xuất hiện trên thanh trạng thái màn hình của tôi với các tên đó. Vì vậy, tôi sẽ có một mục màn hình trông giống như

0$ jen1 ...

Bây giờ, khi tôi cần chuyển sang máy chủ đó và làm bất cứ điều gì đơn giản như tìm nạp danh sách thư mục, tên đó đột nhiên mở rộng và trở thành

0$ ghellings@devjenkins01

Điều tương tự cũng xảy ra với mỗi và mọi cửa sổ khi tôi truy cập vào nó, làm cho thanh trạng thái của tôi nhanh chóng tràn qua chiều rộng màn hình ngang của tôi. Tôi muốn khóa tên tại chỗ vào thời gian tạo cửa sổ và ngăn ứng dụng khách thay đổi tên. Tôi không muốn bất kỳ ứng dụng nào có thể thay đổi tiêu đề cửa sổ màn hình (hoàn toàn ngược lại với những gì nhiều người dường như đang hỏi). Điều này trở nên đặc biệt cồng kềnh khi tôi thay đổi màn hình đó và mở một thư mục ở đâu đó. Sau đó, tiêu đề màn hình trở thành

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

Tôi muốn nó chỉ thay đổi trạng thái hoạt động để nó luôn luôn đọc

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

Có cách nào để tôi khóa tên cửa sổ và ngăn thay đổi không?

Câu trả lời:


8

Tôi đã tìm thấy điều này sớm trong thử nghiệm RHEL 7 và nó sẽ khiến tôi phát điên. Những gì tôi phát hiện ra là có một sự thay đổi /etc/bashrctrong RHEL 7 gây ra việc đặt tên cho các cửa sổ screentmuxthay đổi bất cứ khi nào một lệnh như cdhoặc lsđược chạy. Trong phần màn hình *)

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

Vì vậy, trong RHEL 7, sự thay đổi là từ ] 0; đến k trong phần PROMPT_COMMAND.

Tôi đã xem xét việc mở một lỗi, nhưng không bao giờ có xung quanh nó. Tôi thường chỉ thay đổi nó bằng tay trên một cài đặt mới.

  • Thay đổi được thực hiện để cập nhật định dạng

6

Rất có thể, bạn có PROMPT_COMMANDbiến được đặt thành một cái gì đó như

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

Tôi có chính xác điều này trên hệ thống CentOS 7. Cái này đặt tiêu đề cửa sổ xterm sau mỗi lệnh, screensử dụng làm tiêu đề cửa sổ.

Chỉ cần bỏ đặt PROMPT_COMMANDtrong .bashrchoặc chỉnh sửa /etc/bashrcđể không đặt nó.


Xem dưới đây để làm điều này lâu dài hơn.
toán

2

Nếu bạn kiểm tra .bashrchoặc /etc/bashrc, bạn có thể thấy ifhoặc casecó liên quan đến screen.

Trong trường hợp của tôi, nó là một cái gì đó như:

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

dưới case $TERM introng /etc/bashrctập tin.

Vấn đề là tôi không có file /etc/sysconfig/bash-prompt-screenđể PROMPT_COMMANDdưới elseđược sử dụng.

Tôi chỉ tạo một /etc/sysconfig/bash-prompt-screentập tin trống sau đó tiêu đề của các cửa sổ màn hình không được thay đổi động nữa!


Phải làm cho tệp trống có thể thực thi được hoặc bạn sẽ nhận được cảnh báo mỗi khi bash được khởi chạy (ví dụ: khi đăng nhập cho mọi người).
toán
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.