Làm cách nào để ngăn GNU Screen đặt lại lời nhắc của tôi? [đóng cửa]


13

Khi tôi chạy màn hình, nó thay đổi lời nhắc của tôi. Làm thế nào để tôi ngăn chặn hành vi này? Ví dụ:

$ echo $PS1
\[\e]0;\h:Prod\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n\$
$ screen
$ echo $PS1
[\u@\h \W]\$

Thật thú vị, nó không làm điều này trên các máy khác. Máy đang được đề cập là Redhat 4 update 4, với phiên bản Màn hình 4,00.02 (FAU) 5-Dec-03.

Câu trả lời:


16

Hãy thử thêm (giả sử nó chưa có) vào tệp .screenrc của bạn:

vỏ - $ SHELL

Điều này sẽ cung cấp cho bạn một vỏ đăng nhập khi bạn khởi tạo một phiên màn hình hoặc tạo một thiết bị đầu cuối khác từ bên trong một.


1
Tôi đã có 'shell / bin / bash' trong .screenrc của tôi, rõ ràng nó phải là 'shell - / bin / bash' hoặc những gì bạn cung cấp.
Swoogan

2

Nhiều bản phân phối kiểm tra loại thiết bị đầu cuối trước khi đặt dấu nhắc. Ví dụ, Ubuntu chứa viên ngọc nhỏ này trong .bashrc mặc định:

# đặt một dấu nhắc ưa thích (không màu, trừ khi chúng ta biết chúng ta "muốn" màu)
trường hợp "$ HẠN" trong
    xterm-color) color_prompt = yes ;;
esac

Vì màn hình sử dụng biến TERM của riêng nó ("màn hình"), bash nghĩ rằng nó không có khả năng hiển thị một dấu nhắc màu sắc lạ mắt nên nó mặc định là đơn giản hơn. Màn hình, tất nhiên, có khả năng đầy đủ các lời nhắc phức tạp giống như một thiết bị đầu cuối bình thường.

Vì vậy, để ghi đè hành vi này, chỉ cần thiết lập cứng các tùy chọn PS1 ưa thích của bạn ở cuối ~/.bashrctệp. Hoặc, nếu bạn cảm thấy thích phiêu lưu, hãy tìm bài kiểm tra kiểm tra giá trị của biến TERM và sửa đổi nó để chấp nhận "màn hình" ngoài "xterm-color".


1

Có lẽ đây là một biến tùy chỉnh được đặt trong tệp ~ / .screenrc?


1
Có, hãy kiểm tra setenv PS1 trong màn hình toàn cầu hoặc cá nhân
bán kính

4
Và biến tùy chỉnh đó sẽ là gì? Nếu bạn không biết câu trả lời, đừng trả lời.
Swoogan

0

Có cùng một vấn đề (không có thêm dấu nhắc tùy chỉnh trong màn hình) trên máy có SHELL -$SHELLvà không có setenv PS1screenrc và không có thử nghiệm đặc biệt nào cho thiết bị đầu cuối (câm) trong bashrc.

Đặt $ HẠN đã sử dụng:

$ echo $TERM
urxvt-unicode-256color

trong screenrc nhận được lời nhắc tùy chỉnh của tôi trở lại trong khi bên dưới Màn hình:

- #term xterm-256color
+ term urxvt-unicode-256color

PS: một tài khoản khác không cần điều này, nhưng bashrc kiểm tra dircolors và thiết bị đầu cuối hiện đại theo cách 1 :

if [[ $'\n'${match_lhs} == *$'\n'"TERM "${safe_term}* ]] ; then
PS1=<my fancy prompt>

Tôi tin rằng điều này cũng hoạt động:

if [ "$TERM" != "dumb" ]; then
PS1=<my fancy prompt>
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.