Khi tôi ssh vào hộp ubfox chạy Hardy 8.04, các biến môi trường trong tôi .bashrc
không được đặt.
Nếu tôi làm một nguồn .bashrc
, các biến được đặt đúng, và tất cả đều tốt.
Tại sao .bashrc
không chạy khi đăng nhập?
.bashrc
và .bash_profile
!
Khi tôi ssh vào hộp ubfox chạy Hardy 8.04, các biến môi trường trong tôi .bashrc
không được đặt.
Nếu tôi làm một nguồn .bashrc
, các biến được đặt đúng, và tất cả đều tốt.
Tại sao .bashrc
không chạy khi đăng nhập?
.bashrc
và .bash_profile
!
Câu trả lời:
.bashrc
không có nguồn gốc khi bạn đăng nhập bằng SSH. Bạn cần nguồn nó .bash_profile
như thế này:
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
.bashrc
có nguồn gốc khi bạn SSH vào, theo mặc định.
.bashrc
out-of-the-box - nhưng nó có phải nó từ .profile
, không .bash_profile
.
Tôi đã có tình huống tương tự như Hobhouse. Tôi muốn sử dụng lệnh
ssh myhost.com 'some_command'
và 'some_command' tồn tại trong '/ var / some_location' vì vậy tôi đã cố gắng thêm '/ var / some_location' trong môi trường PATH bằng cách chỉnh sửa '$ HOME / .bashrc'
nhưng điều đó đã không làm việc. bởi vì .bashrc (Ubuntu 10.4 LTS) mặc định ngăn không tìm nguồn cung ứng theo mã như bên dưới
# If not running interactively, don't do anything
[ -z "$PS1" ] && return
Vì vậy, nếu bạn muốn thay đổi môi trường cho ssh không đăng nhập shell. bạn nên thêm mã ở trên dòng đó.
bash # If not running interactively, don't do anything case $- in *i*) ;; *) return;; esac
Để có một tài nguyên tuyệt vời về cách hoạt động của bash invocation, dotfiles sẽ làm gì và cách bạn nên sử dụng / cấu hình chúng, hãy đọc điều này:
Nếu giải pháp của ayman không hoạt động, hãy thử đặt tên tệp của bạn .profile
thay vì .bash_profile
. Điều đó làm việc cho tôi.
.profile
sẽ được thực thi bởi bất kỳ shell đăng nhập nào , bất kể shell đã nói có ý định sinh ra GUI hay không. Nhận xét của bạn hoàn toàn mâu thuẫn với câu hỏi và câu trả lời này, trong đó chỉ rõ rằng.profile
được gọi trên SSHing - một phương pháp không phải là GUI rõ ràng.