Tại sao 'tmux' tạo các cửa sổ mới làm vỏ đăng nhập theo mặc định?


26

Khi bạn bắt đầu một phiên mới trong tmuxhoặc tạo một cửa sổ mới bên trong một phiên đang chạy, hành vi mặc định của nó là chạy một vỏ (ví dụ bash:) như một vỏ đăng nhập.

Tôi hiểu rằng một vỏ đăng nhập được dự định để thực hiện một thói quen cấu hình và các thủ tục được quan tâm chỉ khi bạn đăng nhập vào một hệ thống . Nhưng trong phần lớn các trường hợp (ngoại trừ bạn có thể sử dụng tmux làm vỏ đăng nhập), đó không phải là mục đích thực sự của người dùng để làm điều này khi anh ta chỉ muốn mở một cửa sổ mới.

Vì vậy, lý do để làm cho điều này là hành vi mặc định là tmuxgì?


Điều duy nhất tài liệu nói về vấn đề này:

default-command  shell-command
        Set the command used for new windows (if not specified when the
        window is created) to shell-command, which may be any sh(1)
        command.  The default is an empty string, which instructs tmux
        to create a login shell using the value of the default-shell
        option.

Câu trả lời:


24

Shell không đăng nhập tương tác thường không bao giờ tồn tại lâu hơn shell đăng nhập cấp cao nhất của bạn, do đó họ có thể mong đợi bất kỳ cơ sở nào bắt đầu có sẵn bất cứ lúc nào, nhưng đây không phải là trường hợp của tmux:

  • bạn đăng nhập vào trình bao của mình -> tập lệnh đăng nhập của bạn đang chạy
  • bạn chạy tmux, làm gì đó, tách ra
  • thoát khỏi trình độ cấp cao nhất của bạn -> tập lệnh đăng xuất của bạn đang chạy
  • phiên tmux vẫn đang chạy nhưng bất kỳ cơ sở nào được khởi động bởi shell đăng nhập của bạn không có sẵn tại thời điểm này
  • bạn đăng nhập lại và đính kèm từ shell đăng nhập khác
  • bất kỳ cơ sở nào được khởi động bởi shell đăng nhập mới có thể không được hiển thị bởi tmux vì nó vẫn đang chạy với môi trường cũ (mặc dù có các lệnh để cập nhật môi trường)

Một số người có thể nghĩ rằng việc cài đặt tmux bắt đầu là không cần thiết bởi vì trong hầu hết các thiết lập không có tập lệnh đăng xuất và tập lệnh đăng nhập chỉ thiết lập một số biến môi trường.

Hơn nữa, nếu bạn nối các chuỗi vào các biến môi trường trong các tập lệnh đăng nhập của mình (như thế này: PATH = $ PATH: / some / other / path) và chúng được chạy nhiều lần trong cùng một hệ thống phân cấp mà bạn kết thúc bằng các bản sao và đây là khó chịu nhất

Nhưng tôi vẫn có xu hướng nghĩ mặc định có ý nghĩa.

Xem thêm điều này: http://openbsd-archive.7691.n7.nabble.com/tmux-and-login-shells-td170948.html


2
Cảm ơn bạn đã trả lời và cho các liên kết! Tôi nghĩ rằng tôi có thể sống với exec shcuối cùng ... (tôi đã không nghĩ về điều đó.)
leogama

3
Bạn có bất kỳ ví dụ cụ thể nào về những thứ có thể phá vỡ nếu tmux không sinh ra một vỏ đăng nhập không? Tôi đang nghĩ đến việc biến nó thành mặc định của mình, nhưng tôi không muốn gặp phải những vấn đề khó chẩn đoán.
Carl Patenaude Poulin
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.