Elbette, ortam değişkenini komutun içinde ayarlayabilirsiniz, ancak alıntı yapma konusunda dikkatli olmanız gerekir: kabuğunuzun yerel komut satırınızı ayrıştırdığını ve ardından uzak kabuğun dizeye gideceğini unutmayın alır.
Bir değişkenin, istemcide sahip olduğu sunucuda aynı değeri elde etmesini istiyorsanız, SendEnv
seçeneği deneyin :
ssh -o SendEnv = MYVAR sunucusu.example.com komutum
Bu olsa da, sunucudan destek gerektirir. OpenSSH ile değişken ismi yetkilendirilmiş olmalıdır /etc/sshd_config
.
Sunucu yalnızca belirli değişken adlarına izin veriyorsa, bunun üzerinde çalışabilirsiniz; örneğin, ortak bir kurulum olanak sağlar LC_*
ve aşağıdakileri yapabilirsiniz:
ssh -o SendEnv = LC_MYVAR sunucusu.example.com 'MYVAR = $ LC_MYVAR; LC_MYVAR'ın ayarlanmamış; ihracat MYVAR; mycommand'
Bir LC_*
seçenek olmasa bile , bilgileri TERM
daima değiştirilen ortam değişkeninde iletebilirsiniz (bununla birlikte bir uzunluk sınırı olabilir). Uzak kabuğun TERM
bilinen bir terminal türünü belirtmek için değişkeni kısıtlamadığından emin olmanız gerekir . Geçiş -t
Uzak etkileşimli kabuk başlayan değilseniz ssha seçeneği.
env TERM = "ek bilgi: $ TERM" ssh -t server.example.com 'MYVAR = $ {TERM%: *}; SÜRESİ = $ {SÜRE ## *:}; ihracat MYVAR; mycommand'
Diğer bir olasılık değişkeni doğrudan komutta tanımlamaktır:
ssh -t server.example.com 'verme MYVAR = "ek bilgi"; mycommand'
Böylece, yerel bir değişkeni geçiyorsanız:
ssh -t server.example.com 'verme MYVAR =' "'$ LOCALVAR'" '; mycommand'
Bununla birlikte, alıntı yapma hususlarına dikkat edin: değişkenin değeri doğrudan uzak tarafta yürütülen kabuk snippet'ine dahil edilir. Yukarıdaki son örnekte $LOCALVAR
, herhangi bir tek tırnak ( '
) bulunmadığı varsayılmaktadır .