.Profile içindeki diğer ad ayarlama neden çalışmıyor?


11

Bu benim .profile son satır olarak var:

alias gl="cd /home/jrenner/glances/glances"

yeniden başlatmadan sonra bile gl yazarken komut bulunamadı. Ne oluyor? Doğru kullanıcı olarak giriş yaptım.


Nereye yazıyorsun gl? Durak? GUI?
Thomas Ward

1
Hiç kimse neden orijinaline hitap etmedi ? soru. Ben tanımlanmış takma adların .profiledenediğim herhangi bir bağlamda çalışmadığını teyit edebilirim : aynı dosyadaki çevresel değişkenler çalışsa bile metin konsolu oturumları, grafik terminaller veya başka bir şey.
Daniel Mahler

@DanielMahler, bunun bir sebebi var mı?
Maged Saeed

Yanıtlar:


4

Lpanebr'in fikrinin işe yarayacağından eminim, ama burada daha zarif bir çözüm. Diğer ad komutunu .bashrc bu şekilde yapıyorum veya bazı insanlar diğer adlara ayrılmış bir dosya eklemeyi tercih ediyor. Diyelim .aliasya da her neyse ve eklemek .aliasiçin sizin.bashrc

@ Lpanelbr gibi biçimlendirme yapabilseydim. Wiki var mı acaba?


1
Biçimlendirme gelince askubuntu markdown kullanır. Ayrıntılar için lütfen askubuntu.com/editing-help adresine bakın.
saji89

1
Neden .bashrciş yaparken .profiledeğil mi? Ayrıca, takma ad .alliasyerine ad vermeyi seçmenizin herhangi bir nedeni var .aliasmı?
Tom

# 1 Anladığım kadarıyla .bashrc bash, .profile ise bash olmayan komut satırına özgüdür. # 2 Ne demek istediğini bilmiyorum. Ne de olsa heceleyebiliyorum. (editör)
Jason

7

Takma adların .profiledosyaya yerleştirildiğinde her zaman çalışmamasının iki nedeni vardır . Birincisi, .profile(veya .bash_profile) dosyasının yalnızca bir oturum açma kabuğu için çalıştırılmasıdır. Eğer bash'ı X altındaki bir terminal penceresinde başlatıyorsanız, terminal emülatörünüz (örn. Gnome-termanl) bash'ı giriş kabuğu olarak çalıştırmıyor olabilir. [Çoğu, bunu değiştirmek için bir seçeneğiniz vardır, ancak varsayılan (yine de gnome-termal için) bir giriş kabuğu olarak çalıştırmak değildir.]
Kabuk etkileşimli bir kabuk .bashrcolacaktır ve böylece çalıştırılacaktır.

Ancak, X oturumu başlatıldığında normalde bash bir giriş kabuğu olarak çalıştırıldı. Dolayısıyla, içinde diğer ad komutları varsa .profile, PATH vb. Ortam değişkenlerini ayarlama ile birlikte yürütüleceklerdir. Bir terminal penceresi açıldığında, o terminal penceresinde komut istemek ve komutları çalıştırmak için yeni bir bash örneği çalıştırılır. Ortam değişkenlerinden farklı olarak, takma adlar bash'ın bir örneğinden başlattığı yeni bir örneğe aktarılamaz. Yani takma adlar yeni kabuğa aktarılmaz.

Bunu görmek için şu denemeyi deneyin:

export ROBERT=bob
alias james=jimmy
echo $ROBERT
alias james
bash               #start a new bash instance
echo $ROBERT
alias james
exit               #end the new bash instance and revert to the original one
echo $ROBERT
alias james

.bashrcGiriş kabuğu olarak başlatıldığında bash tarafından çalıştırılmadığını unutmayın . Yani takma adlarınızı oraya koymak, sizden .bashrckaynaklanmadığı sürece her zaman işe yaramaz .profile, bu çok yaygın bir uygulamadır.


Doğrulanmış: ekleyerek source .bashrcde .bash_profileişe .bashrc izin takma seti.
Treefish Zhang

Bunun doğru cevap olması gerektiği anlaşılıyor. Ayrıca, Ubuntu'da sadece takma adlarınızı ekleyin ~/.bash_aliases. Bunu yapmanın doğru yolu bu. (ayrıntılar için .bashrc dosyasını okuyun).
Emilio M.

0

echo $SHELLBir kabuk yorumlayıcısı olarak bash ( ) kullanıyorsanız , kendi CD işlevinizi tanımlamanızın en iyi (veya belki de tek yol) olduğunu düşünüyorum.

Senin düzenleyin .bashrcdosya ve sonuna aşağıdaki ekleyin:

# my custom functions:
function gl () {
   cd /home/jrenner/glances/glances/
}

Ayrıca şu şekilde genişletebilirsiniz:

# my custom functions:
function cdw () {
   cd /home/jrenner/glances/glances/$1
   ls
}

doğrudan bir alt dizine geçip içeriğini listeleyebilirsiniz.


1
Bu iyi bir öneri olabilir, ancak dosyaya aliasyerleştirilen direktifin neden .profilebaşarısız olduğunu açıklayamadığı için bir cevap değildir .
Tom

0
$ bash #start a new bash instance

Bu sunucumla ilgili bir sorundu. Simple source .profilebir sebepten ötürü işe yaramadı


0

Bunu Ubuntu'da yapmanın doğru yolu takma adınızı eklemektir ~/.bash_aliases. Varsa dosyayı oluşturun.

Bu dosya (varsa) varsayılandan çağrılır ~/.bashrcve diğer ad terminal öykünücülerinizde de kullanılabilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.