Dengan asumsi pengguna memiliki /bin/bash
shell di /etc/passwd
. Kemudian ssh user@host command
jalankan perintah menggunakan Bash. Namun, shell itu bukan login atau interaktif, yang berarti tidak ~/.bash_profile
juga ~/.bashrc
tidak bersumber. Dalam hal itu bagaimana cara mengatur PATH
variabel lingkungan agar dapat dieksekusi dan dieksekusi? Apakah disarankan untuk awalan dengan perintah yang sebenarnya source ~/.bashrc
?
18
.bashrc
bersumber, tetapi mungkin memiliki tes untuk interaktivitas di atas. Hal-hal yang Anda masukkan sebelum pemeriksaan itu harus berlaku, dan itulah yang saya lakukan untuk memaksa PATH ketika server tidak mengizinkan lingkungan pengguna atau penggunaan~/.pam_environment
.Jawaban:
Anda memiliki beberapa kemungkinan:
PATH
server pada~/.ssh/environment
(perlu diaktifkan olehPermitUserEnvironment yes
dalamsshd_config
)..bashrc
: awali perintah dengan. ~/.bashrc
(atausource
)Ini sangat tergantung pada use case, ke mana Anda akan pergi.
sumber
~/.bashrc
tidak perlu, ini terjadi secara default. Faktanya, menurut saya itu ide yang buruk.$PATH
tidak berkembang dari~/.ssh/environment
, setidaknya tidak dalamOpenSSH_7.9p1, OpenSSL 1.1.1b 26 Feb 2019
.PermitUserEnvironment
(default dalam versi terbaru)PATH="$PATH:/new/path"
ke saya~/.ssh/environment
ketika seharusnyaPATH=$PATH:/new/path
Anda menyamakan pengaturan lokal ke pengaturan jarak jauh .
Secara lokal, contoh bash, shell berjalan saat ini di mana Anda menulis:
Akan menjalankan perintah ssh (tidak lebih) sebagai ssh klien.
Untuk melakukannya shell lokal tidak perlu memulai sub-shell atau shell baru atau login.
Perintah dieksekusi sebagai
ls
perintah adalah: secara lokal.Ini adalah perintah ssh klien yang membuka koneksi jaringan ke sistem jarak jauh , di mana, jika dikonfirmasi dengan benar, a shell baru akan mulai menjalankan perintah yang ditulis sebagai argumen ke ssh, atau, jika tidak ada argumen yang diberikan, mengharapkan perintah lebih lanjut pada koneksi itu.
Itu baru Remote shell akan menjadi shell login karena pengguna jarak jauh (ke sistem itu) perlu diautentikasi untuk login. Atau, jika beberapa perintah tertentu diberikan, jalankan saja perintah tersebut dengan hak pengguna yang diautentikasi.
Anda dapat melihat file mana yang diambil dengan menambahkan a
$file sourced
ke awal setiap file (di sistem jarak jauh ) (root diperlukan untuk mengubah/etc/
file):Dan kemudian jalankan konsol ssh:
Dalam hal ini, kedua
bashrc
file dibaca karena setiapprofile
file memiliki perintah untuk memasukkannya, bukan karena shell login langsung mengambilnya.Dalam sistem ini, dimana
bashrc
dibaca dalam kedua kasus.Tidak perlu menambahkan
source ~/.bashrc
perintah untuk mengeksekusi.Ubah PATH
Yang perlu Anda lakukan adalah memasukkan pengaturan yang benar untuk mengubah "$ PATH", baik
/etc/bash.bashrc
untuk semua pengguna yang memulai shell di sistem ini. Atau~/.bashrc
untuk setiap pengguna yang membutuhkannya. Anda dapat menambahkan (atau mengedit) kerangka pengguna.bashrc
agar/etc/skel/
pengguna baru yang dibuat memiliki file yang benar tersedia.Di atas hanya berlaku untuk bash. Jika Anda memerlukan pengaturan untuk semua shell, mungkin mengatur PATH variabel lingkungan menggunakan file ssh
~/.ssh/environment
untuk setiap pengguna yang membutuhkannya. Atau gunakan/etc/ssh/sshrc
untuk pengaturan global dalam sistem di mana server ssh berjalan (silakan baca bagian File diman sshd
untuk beberapa detail tambahan).sumber