Tiêu đề tab thiết bị đầu cuối sau phiên SSH


11

Trong Mac OS X (Tôi đang ở ngày 10.6.8, mặc dù tôi tin rằng các phiên bản khác đều giống nhau) khi vào một máy từ xa sẽ thay đổi tiêu đề của tab hiện tại trong Terminal. Khó chịu, khi tôi ngắt kết nối với máy từ xa, rõ ràng có exithoặc hết thời gian chờ, tiêu đề của tab không thay đổi trở lại như cũ.

Trên cơ sở gần như hàng ngày, điều này gần như khiến tôi bị đau tim, khi tôi đang thực hiện một số lệnh hoặc cách khác, chỉ để thấy ngoài tầm mắt của tôi rằng tab vẫn được đặt tên là user @ remotehost. Tôi là một người dùng thận trọng luôn có xu hướng pwdxác nhận vị trí của mình trước khi làm bất cứ điều gì, nhưng nó vẫn khiến tôi hoảng loạn trong giây lát khi tôi làm DROP DATABASE xvà tôi thấy tên máy chủ từ xa trong tab.

Tóm lại, có cách nào để hoàn nguyên tiêu đề này khi ngắt kết nối với máy chủ từ xa hay tôi phải gắn bó với việc mở một tab mới mỗi khi tôi ngắt kết nối, để đặt lại tiêu đề?


Tên thiết bị đầu cuối cũng được đặt lại khi bạn thoátnpm
Awesome_girl

Câu trả lời:


20

Thêm một PROMPT_COMMANDđể bạn .bash_profile

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

Việc PROMPT_COMMANDđược thực hiện mỗi khi dấu nhắc được hiển thị.

Xin lưu ý rằng chúng tôi bao gồm PROMPT_COMMANDbiến môi trường hiện tại , sao cho chúng tôi không mất bất kỳ cài đặt hiện có nào (nghĩa là update_terminal_cwd).


2
Hãy chắc chắn để thêm mã của bạn vào PROMPT_COMMAND thay vì thay thế nó, ví dụ : PROMPT_COMMAND="<your code>; $PROMPT_COMMAND"; nếu không, bạn sẽ vô hiệu hóa chức năng khác sử dụng biến này. Ví dụ: / etc / bashrc sử dụng nó để đặt thư mục làm việc hiện tại của thiết bị đầu cuối để Terminal có thể hiển thị và sử dụng nó cho các hoạt động khác nhau.
Chris Trang

@ChrisPage Có phải mã mới cần được giữ trước $PROMPT_COMMANDđể các chức năng khác được bảo tồn không?
reve_etrange

Tại sao không đặt nó trực tiếp vào PS1?
Yongwei Wu

Đây có phải là cách bạn chỉnh sửa .bash_profile? sublime $HOME/.bash_profile?
Awesome_girl

@Awgie_girl Đảm bảo rằng subllệnh đã được cài đặt, sau đó chỉnh sửa tệp từ thiết bị đầu cuối của bạn bằng cách sử dụng subl ~/.bash_profile. Nếu lệnh này không tồn tại, hãy làm theo điều này: sublimetext.com/docs/2/osx_command_line.html
XtraSimplomatic

1

Đây là những gì bạn sẽ cần phải dán vào .bash_profiletập tin của bạn . Điều này sạch hơn rất nhiều và tiếp cận những gì Apple làm khi cập nhật thư mục làm việc hiện tại của bạn. Việc kiểm tra biến update_term_titleđã có sẵn là không thực sự cần thiết (vì không ai gọi bash -- login), mà chỉ hiện diện như một người bảo vệ.

if [ -z "$INSIDE_EMACS" ]; then
    # Update the terminal title on every prompt shown
    update_term_title() {
        # Print user@short-hostname once SSH quits.
        echo -ne "\033]0;${USER}@${HOSTNAME%%.*}\007"
        # Or ${HOSTNAME} if short host names aren't your taste
        # Or echo -ne "\033]0;\007" if you don't want anything.
    }
    # Check to see if update terminal title is present?
    if ! echo $PROMPT_COMMAND | grep -q update_term_title
    then
       # This function is not found in PROMPT_COMMAND, add it
       PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND; }update_term_title"
    fi
fi

1
Lol, tôi tự hỏi ai đã viết câu trả lời này ... hóa ra đó là tôi :-)
zapstar
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.