Diedit untuk mencerminkan masalah yang ingin saya pecahkan:
Saya perlu mengatur lingkungan ruby saya sehingga saya dapat menggunakan via Capistrano.
export PATH=$HOME/.rbenv/bin:$PATH
eval "$(rbenv init -)"
Saya meletakkan ini di ~ deploy / .profile, tetapi ketika saya ssh, mereka tidak dijalankan. Ide ide?
Saya menjalankan Ubuntu 12.04.
Pertanyaan aslinya adalah:
Ketika saya ssh ke akun lain di localhost, itu tidak memuat profil saya. Bagaimana saya bisa memaksa ssh untuk memuatnya? Saya menjalankan Ubuntu 12.04.
.profile
hanya dimuat untuk shell login, yang sesi ssh tidak (secara default). Jika Anda ingin sesuatu dijalankan saat startup untuk semua shell interaktif, masukkan saja.bashrc
(.zshrc
atau apa pun yang digunakan shell Anda).Juga, jika Anda hanya ingin masuk ke akun lain di mesin lokal, ssh mungkin berlebihan. Anda mungkin ingin menggunakan
su
atau sesuatu sebagai gantinya.sumber
.bashrc
tidak dimuat juga.Menggunakan bash akan menghasilkan bacaan
~/.bashrc
. Berikut ini mungkin membantu dengan ksh dan sh (bash dalam mode sh), atau ketika Anda~/.bashrc
tidak dieksekusi saat login.Sshd berkonsultasi
~/.ssh/environment
(periksa sshd_config (5) untuk izin) dan~/.ssh/sshrc
atau~/.ssh/rc
. Ini memberi kemungkinan untuk mengaturENV=~/.profile
atauBASH_ENV=~/.profile
danSSH_LOGIN=Y
Di
~/.profile
Saya memiliki tata letak berikut (GantiENV
denganBASH_ENV
saat menggunakan bash):sumber
Bash
~/.profile
hanya membaca ketika itu adalah shell login dan~/.bash.bashrc
hanya jika ia memiliki terminal, yang keduanya tidak benar secara default ketika menjalankan perintah dengan ssh. Namun, ada beberapa opsi lain untuk mengatur lingkungan, di server, semua sayangnya tergantung pada pengaturan sistem:~/.zshenv
bahkan dalam kasus ini; tidak ada file konfigurasi yang sesuai untuk bash.PermitUserEnvironment
opsi ini aktif/etc/sshd_config
, ssh akan membaca~/.ssh/environment
. Sayangnya opsi ini tidak aktif.pam_env.so
dipanggil denganuser_readenv=1
in/etc/pam.d/sshd
, ia akan membaca~/.pam_environment
. Walaupun tidak merupakan modul default, modul ini disebut demikian setidaknya di Ubuntu .command=
arahan di file kunci yang sah memanggil skrip pembungkus yang menetapkan lingkungan dan mengeksekusi$SSH_ORIGINAL_COMMAND
di akhir (saya perintah adalah satu untuk shell, jadi eval sesuai di sini, tapi saya tidak yakin) .sumber
Anda mungkin memiliki
~/.bash_profile
, yang menimpa~/.profile
.sumber