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, commandolmayan 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 bashkomut 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 -ibasit 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_profilevarsa) düzenleyin ve bu satırı sonuna ekleyin:
my_alias
Çünkü ~/.profilebir oturum açma kabuğu her başlatıldığında okunur ( sshörneğin , her bağlandığınızda ), bu my_aliasher bağlandığınızda çalışmasına neden olur .
Varsayılan olarak, giriş kabuklarının okundu ~/.profileveya ~/.bash_profileyoksayıldığını unutmayın ~/.bashrc. Ubuntu gibi bazı dağıtımlar (Debian ve türevleri ve Arch) dağıtımları varsayılan ~/.profileveya ~/.bash_profiledosya kaynaklarına ~/.bashrcsahiptir, yani tanımlanmış takma adlarınız ~/.bashrcbir giriş kabuğunda da kullanılabilir. Bu, tüm dağıtımlar için geçerli değildir, bu nedenle ~/.profilekaynağınız olması için manuel olarak düzenlemeniz gerekebilir ~/.bashrc. Ayrıca eğer dikkat ~/.bash_profilevar, ~/.profilebash tarafından göz ardı edilecektir.