Sorun, etkileşimli olmayan bir kabukta bir diğer ad çalıştırmaya çalışmanızdır. Eğer çalıştırdığınızda ssh user@computer command
, command
olmayan etkileşimli olarak çalıştırılır.
Etkileşimli olmayan mermiler takma adları okumaz (man bash'tan):
Expand_aliases shell seçeneği shopt kullanılarak ayarlanmadığı sürece, kabuk etkileşimli olmadığında takma adlar genişletilmez (aşağıdaki SHELL BUILTIN COMMANDS altındaki shopt açıklamasına bakın).
Son bash
komut takma adlarınız artık kullanılabilir olduğundan etkileşimli bir kabuk başlattığından , el ile yeniden çalıştırırsanız çalışır .
Alternatif olarak, takma adınızı çalıştırmak için uzak makinede bash -i
basit bir oturum açma kabuğu ( bash -l
) yerine etkileşimli bir kabuk ( ) başlatabilirsiniz :
ssh user@remote_computer -t 'bash -ic "my_alias;bash"'
Bu çok karmaşık bir yaklaşım gibi görünüyor. Bunu tam olarak neden yapmanız gerektiğini açıklamadınız, ancak şu alternatifleri göz önünde bulundurun:
Uzak makinede normal bir giriş etkileşimli kabuğu başlatın ve komutu manuel olarak çalıştırın:
user@local $ ssh user@remote
user@remote $ my_alias
Bu bilgisayara bağlandığınızda diğer adın her zaman çalışmasını istiyorsanız , uzak bilgisayarın ~/.profile
(veya ~/.bash_profile
varsa) düzenleyin ve bu satırı sonuna ekleyin:
my_alias
Çünkü ~/.profile
bir oturum açma kabuğu her başlatıldığında okunur ( ssh
örneğin , her bağlandığınızda ), bu my_alias
her bağlandığınızda çalışmasına neden olur .
Varsayılan olarak, giriş kabuklarının okundu ~/.profile
veya ~/.bash_profile
yoksayıldığını unutmayın ~/.bashrc
. Ubuntu gibi bazı dağıtımlar (Debian ve türevleri ve Arch) dağıtımları varsayılan ~/.profile
veya ~/.bash_profile
dosya kaynaklarına ~/.bashrc
sahiptir, yani tanımlanmış takma adlarınız ~/.bashrc
bir giriş kabuğunda da kullanılabilir. Bu, tüm dağıtımlar için geçerli değildir, bu nedenle ~/.profile
kaynağınız olması için manuel olarak düzenlemeniz gerekebilir ~/.bashrc
. Ayrıca eğer dikkat ~/.bash_profile
var, ~/.profile
bash tarafından göz ardı edilecektir.