Bạn đang đánh đồng các cài đặt cục bộ với các cài đặt từ xa .
Tại địa phương, một ví dụ bash, shell hiện tại mà bạn viết:
ssh user@host command
Sẽ thực thi lệnh ssh (không có gì nữa) dưới dạng ssh client.
Để làm như vậy, shell cục bộ không cần phải khởi động shell phụ hoặc shell mới hoặc đăng nhập.
Lệnh được thực thi như một ls
lệnh là: cục bộ.
Đó là lệnh ssh client mở kết nối mạng tới một hệ thống từ xa , trong đó, nếu được xác thực chính xác, một shell mới sẽ được bắt đầu để thực thi lệnh được viết dưới dạng đối số cho ssh, hoặc, nếu không có đối số nào được đưa ra, hãy chờ các lệnh tiếp theo trên kết nối đó.
Remote shell mới đó nhất thiết phải là shell đăng nhập vì người dùng từ xa (với hệ thống đó) cần được xác thực để đăng nhập. Hoặc, nếu một số lệnh cụ thể được đưa ra, chỉ cần chạy lệnh đó với các đặc quyền người dùng được xác thực.
Bạn có thể xem tệp nào có nguồn gốc bằng cách thêm a $file sourced
vào đầu mỗi tệp (trong hệ thống từ xa ) (cần root để thay đổi /etc/
tệp):
$ a=(~/.bashrc ~/.profile /etc/bash.bashrc /etc/profile)
$ for f in "${a[@]}"; do sed -i '1 i\echo "'"$f"' was read"\n' "$f"; done
Và sau đó chỉ cần bắt đầu một giao diện điều khiển ssh:
$ ssh sorontar@localhost
/etc/profile was read
/etc/bash.bashrc was read
/home/sorontar/.profile was read
/home/sorontar/.bashrc was read
Trong trường hợp này, cả hai bashrc
tệp đều được đọc vì mỗi profile
tệp có các lệnh để bao gồm chúng, không phải vì vỏ đăng nhập trực tiếp có nguồn gốc chúng.
$ ssh sorontar@localhost :
/etc/bash.bashrc was read
/home/sorontar/.bashrc was read
Trong hệ thống này, nơi bashrc
được đọc trong cả hai trường hợp.
Không cần thêm a source ~/.bashrc
vào lệnh để thực thi.
Thay đổi lộ trình
Tất cả những gì bạn cần làm là bao gồm các cài đặt chính xác để thay đổi "$ PATH", /etc/bash.bashrc
cho tất cả người dùng bắt đầu hệ vỏ trong hệ thống này. Hoặc trong ~/.bashrc
mỗi người dùng cần nó. Bạn có thể thêm (hoặc chỉnh sửa) một bộ xương của một người sử dụng .bashrc
để /etc/skel/
có bất kỳ người dùng mới được tạo ra có đúng file có sẵn.
Ở trên chỉ có giá trị cho bash. Nếu bạn cần cài đặt để hoạt động cho tất cả các hệ vỏ, có thể thiết lập biến môi trường PATH bằng tệp ssh ~/.ssh/environment
cho mỗi người dùng cần nó. Hoặc sử dụng /etc/ssh/sshrc
cho cài đặt toàn cục trong hệ thống nơi máy chủ ssh đang chạy (vui lòng đọc phần Tệp man sshd
để biết thêm chi tiết).
.bashrc
có nguồn gốc, nhưng nó có thể có một bài kiểm tra về tính tương tác ở đầu. Những điều bạn đặt trước kiểm tra đó sẽ được áp dụng và đó là những gì tôi làm để buộc PATH khi máy chủ không cho phép môi trường người dùng hoặc sử dụng~/.pam_environment
.