neden .bashrc dosyasında tanımlanan diğer adlar çalışmıyor?


12

Aşağıdaki gibi .bashrc dosyasında takma adlar verdim. Ancak takma adlar çalışmıyor. neden?

alias c='clear'
alias l='ls -lt'
alias h='history'
alias d='ls -lt |grep "^d"'

export ORACLE_HOME=/ora11gr2/app/oracle/product/11.2.0/db2
export ORACLE_LIB=/ora11gr2/app/oracle/product/11.2.0/db2/lib
export PATH=$ORACLE_HOME/bin:/usr/vac/bin:/usr/vacpp/bin:.    
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:.

2
Ortam değişkenlerini aldığınız, ancak takma adları almadığınızı mı söylüyorsunuz, yoksa hiçbirini almadınız mı?
Paul

1
Ayrı bir sorun olabilir, ancak PATH'inizi silersiniz. Herhangi bir ortamda eski PATH'nize referans vermelisiniz, örneğinexport PATH=$PATH:$ORACLE_HOME/bin:/usr/vac/bin:/usr/vacpp/bin:. export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
Rich Homolka

Yanıtlar:


29

.bashrcDosyanızı değiştirdikten sonra kaynakladınız mı? Deneyin:

. ~/.bashrc

O zaman kabuğunuz değişiklikleri görmelidir. Alternatif olarak, kabuğunuzu sonlandırabilir ve yeniden başlatabilirsiniz.

ps

Bir komut dosyasından çalıştırdığınızda, bu ilk referansı yükleyin

shopt -s expand_aliases

2
Bu benim sorunumu çözdü! Bundan önce, SSH aracılığıyla çıkış yapmayı ve tekrar girmeyi denedim, ancak hiçbir şey olmadı. Takma ad hala mevcut değildi. Görünüşe göre SSH'yi her yaptığımda bunu yapmak zorundayım! Bunun neden olduğunu biliyor musun?
Vladimir Despotovic

Yeniden çalıştırmayı önermiyorum .bashrc. Bazı yinelenen ve şişen değerlere neden olabilir. Neden çıkıp yeni bir kabuk başlatmıyorsunuz? Güncellenen .bashrcdosyayı yükler.
AlikElzin-kilaka

2

PATH'niz, ikili absoulte yolunun başvurduğu tüm diğer adları kullanacak şekilde doğru şekilde ayarlanmamış olduğundan bu durum oluşabilir. Yani / bin / ls altında bulunur.

"Export PATH = $ PATH: $ ORACLE_HOME / bin: / usr / vac / bin: / usr / vacpp / bin:" komutunu kullanarak deneyebilir misiniz? veya "export PATH = $ ORACLE_HOME / bin: / usr / vac / bin: / usr / vacpp / bin: / bin: / sbin /: / usr / sbin gibi bir şey

değilse, tek tek diğer ad ref ikili dosyalarının (hangi geçmiş) yol dizinini bulmak için "hangi" öğesini kullanın.


1

Kendinize sorulacak sorular:

  • ~ / .Bashrc zaten kabuğunuzda yürütülüyor. Yalnızca kabuk başlatıldığında çalışır. Yeni bir kabuk açarsanız (execute bash) olmalıdır. Sizinle birlikte aliastüm takma adlarınızı görmelisiniz.
  • İkinci soru: takma adlarınızdaki programlar mevcut mu? En azından h (takma tarih) kesinlikle çalışmalıdır, çünkü yerleşiktir.

1

Belki .bashrczaten küresel olan takma adlarınızı tanımlamaya çalışıyorsunuzdur .

Genellikle içindeki takma adlarınız çağrıdan .bashrcönce tanımlanır /etc/bashrc. Onları daha sonra tanımlamaya çalışın .

İşte size bir örnek .bashrc:

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

# User specific aliases and functions
alias c='clear'
alias l='ls -lt'
alias h='history'
alias d='ls -lt |grep "^d"'

export ORACLE_HOME=/ora11gr2/app/oracle/product/11.2.0/db2
export ORACLE_LIB=/ora11gr2/app/oracle/product/11.2.0/db2/lib
export PATH=$ORACLE_HOME/bin:/usr/vac/bin:/usr/vacpp/bin:.    
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:.

Müthiş cevap! Bunu AWS Linux
AMI'sinde

1

Herhangi bir MacOS kullanıcısının bu cevabı araması durumunda , bunu MacBook'umda denedim ve hatta Terminal'i yeniden başlatmak yeni takma tanımları yüklemeyecekti. Çalışabilmemin tek yolu source ~/.bashrcher zaman oldu. Daha sonra takma ad tanımlarımı taşımaya çalıştım ~/.bash_profileve bu da işe yaradı.

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.