Tentu saja, Anda dapat mengatur variabel lingkungan di dalam perintah, namun Anda harus berhati-hati mengutip: ingat bahwa shell Anda akan mengurai baris perintah lokal Anda, dan kemudian shell remote akan mencoba-coba string itu. menerima.
Jika Anda ingin variabel mendapatkan nilai yang sama pada server yang dimilikinya pada klien, coba SendEnv
opsi:
ssh -o SendEnv = MYVAR server.example.com perintah saya
Ini membutuhkan dukungan dari server. Dengan OpenSSH, nama variabel harus diotorisasi dalam /etc/sshd_config
.
Jika server hanya mengizinkan nama variabel tertentu, Anda dapat mengatasinya; misalnya pengaturan umum memungkinkan LC_*
melalui, dan Anda dapat melakukan hal berikut:
ssh -o SendEnv = LC_MYVAR server.example.com 'MYVAR = $ LC_MYVAR; batalkan LC_MYVAR; ekspor MYVAR; perintah saya
Bahkan jika LC_*
bukan pilihan, Anda dapat meneruskan informasi dalam TERM
variabel lingkungan, yang selalu disalin (mungkin ada batas panjangnya). Anda masih harus memastikan bahwa shell jarak jauh tidak membatasi TERM
variabel untuk menunjuk tipe terminal yang dikenal. Lewati -t
opsi ke ssh jika Anda tidak memulai shell interaktif jarak jauh.
env TERM = "informasi tambahan: $ TERM" ssh -t server.example.com 'MYVAR = $ {TERM%: *}; TERM = $ {TERM ## *:}; ekspor MYVAR; perintah saya
Kemungkinan lain adalah mendefinisikan variabel secara langsung dalam perintah:
ssh -t server.example.com 'export MYVAR = "informasi tambahan"; perintah saya
Jadi, jika melewati variabel lokal:
ssh -t server.example.com 'ekspor MYVAR =' "'$ LOCALVAR'" '; perintah saya
Namun, waspadalah terhadap masalah mengutip: nilai variabel akan diinterpolasi langsung ke potongan shell yang dijalankan di sisi jarak jauh. Contoh terakhir di atas mengasumsikan bahwa $LOCALVAR
tidak mengandung tanda kutip tunggal ( '
).