Ketika saya menjalankan program saya secara interaktif, ia bekerja dengan baik:
ssh somehost
$ ~/some/path/somescript.py
Ketika saya menjalankan program saya melalui ssh secara langsung, itu tidak berhasil. Variabel PYTHONPATH
tidak disetel, karena .bashrc
tidak bersumber.
ssh somehost ~/some/path/somescript.py
Jika saya lari ssh somehost 'source ~/.bashrc; ~/some/path/somescript.py'
, itu berfungsi dengan baik.
Tetapi yang terakhir tidak akan bekerja untuk beberapa orang lain, misalnya menggunakan tcsh dan tidak memiliki ~/.bashrc
sama sekali).
Apa yang perintah untuk menjalankan hal melalui ssh pada host lain yang bekerja untuk semua kerang?
bash
ssh
environment-variables
remote
bzdjamboo
sumber
sumber
bash
, maka itu sumber.bash_profile
atau.profile
untuk login interaktif, dan.bashrc
untuk login non-interaktif. Jika shell login Anda menggunakan bashsh
atau ash atau ksh, shell.profile
untuk sumber login interaktif dan tidak ada untuk login non-interaktif.Jawaban:
Tidak ada file standar per pengguna yang dijalankan untuk login non-interaktif. Anda perlu membuat program mandiri, sehingga dapat menemukan dependensinya tanpa bergantung pada variabel lingkungan non-default, atau mengatur lingkungan secara eksplisit, biasanya dengan
Anda tidak boleh mengatur variabel lingkungan di
.bashrc
: file ini dimaksudkan untuk shell interaktif, dan dibaca di setiap instance bash. Variabel lingkungan harus ditetapkan.profile
, yang dibaca ketika Anda login. Terlepas dari sangat sedikit orang yang tidak menggunakan shell Bourne-style sebagai shell login mereka,.profile
tidak bekerja untuk semua orang, apakah mereka menggunakan bash atau zsh atau csh atau ikan secara interaktif. Lihat juga Perbedaan antara .bashrc dan .bash_profile , File pengaturan mana yang harus digunakan untuk mengatur variabel lingkungan dengan bash? .Yang sedang berkata, ada cara untuk sumber skrip setiap kali Anda login lebih dari ssh dengan kunci tertentu. Lihat Apakah ada cara untuk mendorong informasi konfigurasi shell ketika SSHing ke host? , sh file startup lewat ssh .
sumber
Saya memiliki masalah yang sama, tetapi bagi saya solusinya berbeda. Pengguna saya tidak dikonfigurasikan untuk menggunakan bash sebagai shell, melainkan menggunakan zsh sebagai shell, oleh karena itu file bash dot tidak dijalankan saat login. Buka / etc / passwd dengan editor teks dan cari nama pengguna Anda dan shell apa yang digunakannya:
Beginilah tampilan entri pengguna saya. Perhatikan ia mengatakan / bin / zsh bukan / bin / bash. Untuk zsh, file dot yang benar adalah ~ / .zprofile. Isinya akan dijalankan setiap kali Anda login menggunakan ssh.
sumber