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 SendEnvopsi:
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 TERMvariabel lingkungan, yang selalu disalin (mungkin ada batas panjangnya). Anda masih harus memastikan bahwa shell jarak jauh tidak membatasi TERMvariabel untuk menunjuk tipe terminal yang dikenal. Lewati -topsi 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 $LOCALVARtidak mengandung tanda kutip tunggal ( ').