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 .bashrckhô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 .bashrckhông chạy khi đăng nhập?
.bashrcvà .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 .bashrckhô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 .bashrckhông chạy khi đăng nhập?
.bashrcvà .bash_profile!
Câu trả lời:
.bashrckhông có nguồn gốc khi bạn đăng nhập bằng SSH. Bạn cần nguồn nó .bash_profilenhư thế này:
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
.bashrccó nguồn gốc khi bạn SSH vào, theo mặc định.
.bashrcout-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 .profilethay vì .bash_profile. Điều đó làm việc cho tôi.
.profilesẽ đượ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.