Tôi sử dụng màn hình hàng ngày cho nhu cầu thiết bị đầu cuối của mình và tôi khá hài lòng với nó. Gần đây, tuy nhiên, tôi thực hiện một số bản cập nhật cho các file cấu hình bash của tôi và tôi nhận thấy rằng tôi đã thiết lập khác nhau PATH
các yếu tố ( PATH
, MANPATH
, INFOPATH
, vv) trong 2 nơi. Tôi đã sửa đổi các tệp thành đúng như những gì chúng cần và bây giờ tất cả các biến môi trường của tôi được đặt một lần vào .bash_profile
. Đây là vấn đề của tôi.
Rõ ràng, lý do tôi đặt chúng ở hai nơi là vì màn hình. màn hình dường như chỉ thực thi .bashrc
và dường như không kế thừa PATH
chính xác hoặc bất kỳ biến môi trường nào khác từ vỏ bash ban đầu của tôi. Bởi vì nó chỉ thực thi .bashrc
và bây giờ tôi .bash_profile
chỉ đặt các biến của mình , tôi nhận được một không đầy đủ PATH
.
Sau đó, câu hỏi của tôi là làm thế nào để đưa các biến môi trường của tôi vào màn hình mà không bị trùng lặp. Đọc qua các Bash
tài liệu dường như chỉ ra rằng nó có thể là loại vỏ mà màn hình sử dụng để đăng nhập, tức là vỏ tương tác không đăng nhập nhưng tôi không thể tìm ra cách buộc màn hình sử dụng một loại vỏ cụ thể, chỉ Shell để sử dụng thông qua -s /bin/bash
.
Bạn có thể kiểm tra các tệp cấu hình của tôi tại trang GitHub của tôi . Đây là cam kết đã phá vỡ màn hình .
EDIT: Tôi đang sử dụng Screen version 4.00.03 (FAU) 23-Oct-06
và tôi có xu hướng gọi nó bằng cáchscreen -h 50000
EDIT: Bây giờ tôi đã có thể thử nghiệm điều này trên Cygwin ( CYGWIN_NT-5.1 1.7.1(0.218/5/3) i686
, Screen version 4.00.03 (FAU) 23-Oct-06
) và nó thể hiện hành vi khác so với trên máy Mac của tôi.
Hành vi cụ thể mà tôi đã phát hiện ra là trong Cygwin, những thay đổi mà tôi thực hiện PATH
trong .bash_profile được sao chép khi vào màn hình và sau đó tạo liên tiếp các cửa sổ màn hình không sao chép đường dẫn mà thực hiện lại nguồn .bash_profile.
Để minh họa hành vi tôi đang nói về:
Đầu ra từ một thiết bị đầu cuối mới:
...
PATH: /home/tvishe01/bin/emacs/bin:/home/tvishe01/bin:/usr/local/bin:/usr/bin:/bin:/cygdrive/c/WINDOWS/system32:/cygdrive/c/WINDOWS:/cygdrive/c/WINDOWS/System32/Wbem:/cygdrive/c/Program Files/ATI Technologies/ATI.ACE/Core-Static:/groovy-1.6.1/bin:/usr/lib/lapack
MANPATH: /home/tvishe01/share/man:/usr/local/man:/usr/share/man:/usr/man::/usr/ssl/man
Aliases:
alias ..='cd ..'
alias ...='cd ../..'
...
[~]$
Đầu ra từ lần gọi đầu tiên của màn hình:
[~]$ screen -h 50000 -s -/bin/bash
...
PATH: /home/tvishe01/bin/emacs/bin:/home/tvishe01/bin:/usr/local/bin:/usr/bin:/bin:/home/tvishe01/bin/emacs/bin:/home/tvishe01/bin:/usr/local/bin:/usr/bin:/bin:/cygdrive/c/WINDOWS/system32:/cygdrive/c/WINDOWS:/cygdrive/c/WINDOWS/System32/Wbem:/cygdrive/c/Program Files/ATI Technologies/ATI.ACE/Core-Static:/groovy-1.6.1/bin:/usr/lib/lapack
MANPATH: /home/tvishe01/share/man:/usr/local/man:/usr/share/man:/usr/man:/home/tvishe01/share/man:/usr/local/man:/usr/share/man:/usr/man::/usr/ssl/man:/usr/ssl/man
Aliases:
alias ..='cd ..'
alias ...='cd ../..'
...
[~]$
Các cuộc gọi tiếp theo tới C-a c
:
...
PATH: /home/tvishe01/bin/emacs/bin:/home/tvishe01/bin:/usr/local/bin:/usr/bin:/bin:/home/tvishe01/bin/emacs/bin:/home/tvishe01/bin:/usr/local/bin:/usr/bin:/bin:/cygdrive/c/WINDOWS/system32:/cygdrive/c/WINDOWS:/cygdrive/c/WINDOWS/System32/Wbem:/cygdrive/c/Program Files/ATI Technologies/ATI.ACE/Core-Static:/groovy-1.6.1/bin:/usr/lib/lapack
MANPATH: /home/tvishe01/share/man:/usr/local/man:/usr/share/man:/usr/man:/home/tvishe01/share/man:/usr/local/man:/usr/share/man:/usr/man::/usr/ssl/man:/usr/ssl/man
Aliases:
alias ..='cd ..'
alias ...='cd ../..'
...
[~]$
Bạn có thể thấy