Làm thế nào là giá trị biến vỏ TERM mặc định được đặt?


13

Sau khi nâng cấp lên Maverick, tôi đặt biến TERM của mình thành 'câm', điều này không xảy ra với cùng một thư mục nhà chạy từ Lucid và tôi không thay đổi thủ công bất cứ điều gì liên quan đến TERM.

Bất kỳ ý tưởng nào là biến TERM dự kiến ​​sẽ được đặt từ đâu?

Câu trả lời:


13

Để giải thích những gì Gilles nói, giả sử bạn đang kết nối từ xa với Ubuntu của mình từ Windows bằng cách sử dụng Putty.

Trong các tùy chọn cấu hình putty, trong Kết nối-> Dữ liệu có một cài đặt được gọi là chuỗi loại thiết bị đầu cuối. Bạn có thể đặt TATE của mình ở đó và putty hướng dẫn SSH đặt biến môi trường đó. Tại một số điểm sau đó, shell của bạn sẽ được thực thi, có thể là / bin / bash và nó lấy môi trường từ tiến trình cha của nó, có thể là quá trình sshd.

Điều tương tự cũng đúng nếu bạn ssh từ một hộp linux từ xa, chỉ có điều là biến môi trường TERM cục bộ được truyền qua ssh đến kết nối từ xa.

Trong trường hợp trình giả lập thiết bị đầu cuối, công việc của trình giả lập thiết bị đầu cuối là đặt biến môi trường TERM. ví dụ: getty đặt TERM thành "linux" và tạo tiến trình shell (/ bin / bash). hoặc gnome-terminal đặt TERM thành "xterm" và tạo tiến trình shell.


Tôi đã kiểm tra và gnome-terminal hoạt động tốt, nó thực sự là một lỗi "giả lập". Tôi đang sử dụng terminator. Cảm ơn
João Pinto

9

Để trả lời câu hỏi của bạn theo nghĩa đen, trình giả lập thiết bị đầu cuối có nghĩa vụ phải đặt $TERM

Để giải quyết vấn đề của bạn sẽ cần ít nhất là biết trình giả lập thiết bị đầu cuối nào bạn sử dụng. Nó có thể là một lỗi hoặc sai trong mô phỏng thiết bị hay một vấn đề với các tập tin shell của bạn khởi động (có thể ~/.bashrc, nhưng có thể ~/.bash_profile, /etc/bashrc, /etc/profile, ...).

¹ Giả sử bạn không sử dụng một thiết bị đầu cuối phần cứng; sau đó, nó sẽ là đối số getty, được gọi từ inittab(bản phát hành cũ hơn sử dụng SysVinit) hoặc /etc/init/tty*.conf(Ubuntu ≥9.10, sử dụng Upstart).


2
getty không được gọi từ inittab, Ubuntu không còn inittab nữa! Các bảng điều khiển được xác định bởi /etc/init/tty*.conf
LassePoulsen

4
Tôi nghĩ rằng bạn nhận được một huy hiệu cho lần sử dụng đầu tiên tôi đã thấy chú thích trong một câu trả lời :-)
poolie

bây giờ, 15.04 trở lên không còn là mặc định nữa (một lần nữa) và systemd xử lý nó trong dịch vụ getty @, tôi vẫn quen với sự thay đổi đó làm điều tương tự với systemd ... meh !!)
osirisgothra

1

Nếu bạn muốn thay đổi thiết bị đầu cuối, hãy đảm bảo bạn kiểm tra chức năng thay thế cập nhật.

Ví dụ:

update-alternatives --config x-terminal-emulator

Nhiều tùy chọn mặc định hệ thống khác nhau trong Ubuntu được đặt thông qua phương pháp này. Một cái phổ biến khác sẽ là một trình duyệt www

update-alternatives --config x-www-browser
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.