dlaczego nazwy aliasów zdefiniowane w pliku .bashrc nie działają?

12

Podałem nazwy aliasów w pliku .bashrc jak poniżej. Ale nazwy aliasów nie działają. dlaczego?

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:.
Venkatesh
źródło
2
Czy mówisz, że otrzymujesz zmienne środowiskowe, ale nie aliasy, czy nie otrzymujesz żadnej z nich?
Paul
1
Może to być osobny problem, ale wymazujesz swoją ŚCIEŻKĘ. Powinieneś odwoływać się do swojej starej ŚCIEŻKI w dowolnym otoczeniu, np.export PATH=$PATH:$ORACLE_HOME/bin:/usr/vac/bin:/usr/vacpp/bin:. export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
Rich Homolka

Odpowiedzi:

29

Czy .bashrcplik został pobrany po zmianie? Próbować:

. ~/.bashrc

Wtedy twoja powłoka powinna zobaczyć zmiany. Alternatywnie możesz zakończyć i ponownie uruchomić swoją powłokę.

ps

Po uruchomieniu ze skryptu załaduj ten pierwszy numer referencyjny

shopt -s expand_aliases
Fran
źródło
2
To rozwiązało mój problem! Wcześniej próbowałem się nawet wylogować i zalogować ponownie za pośrednictwem SSH, ale nic się nie wydarzyło. Alias ​​był nadal niedostępny. Wygląda na to, że muszę to robić za każdym razem, gdy robię SSH! Czy wiesz dlaczego tak się dzieje?
Vladimir Despotovic
Nie polecam ponownego uruchamiania .bashrc. Może to powodować pewne zduplikowane i spuchnięte wartości. Dlaczego nie wyjść i nie rozpocząć nowej powłoki? Spowoduje to załadowanie zaktualizowanego .bashrcpliku.
AlikElzin-kilaka
2

Może się tak zdarzyć, ponieważ PATH nie został poprawnie ustawiony do korzystania ze wszystkich ścieżek absoulte, do których odwołują się aliasy. Tj. Istnieje pod / bin / ls.

Czy możesz spróbować użyć polecenia „export PATH = $ PATH: $ ORACLE_HOME / bin: / usr / vac / bin: / usr / vacpp / bin :.” lub coś w stylu „export PATH = $ ORACLE_HOME / bin: / usr / vac / bin: / usr / vacpp / bin: / bin: / sbin /: / usr / sbin

jeśli nie, to użyj „które”, aby znaleźć katalog ścieżek dla poszczególnych plików binarnych ref (która historia).

Sivakumar Manickam
źródło
1

Pytania, które należy sobie zadać, to:

  • Czy plik ~ / .bashrc jest już wykonany w powłoce? Działa tylko po uruchomieniu powłoki. Jeśli otworzysz nową powłokę (wykonaj bash), powinna być. Z aliaswas powinien zobaczyć wszystkie aliasy drukowanych.
  • Drugie pytanie: czy dostępne są programy z twoich aliasów. Przynajmniej h (historia aliasów) na pewno powinno działać, ponieważ jest wbudowane.
Fra Orolo
źródło
1

Być może próbujesz zdefiniować swoje aliasy w swoim, .bashrcktóre są już globalne.

Zwykle twoje aliasy .bashrcsą definiowane przed /etc/bashrcpołączeniem. Spróbuj zdefiniować je później .

Oto przykład twojego .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:.
Mario Taddei
źródło
Wspaniała odpowiedź! Widzę to konsekwentnie w AWS Linux AMI
rainabba
1

Na wszelki wypadek, gdy jakikolwiek użytkownik MacOS szuka tej odpowiedzi, wypróbowałem to na moim MacBooku, a nawet ponowne uruchomienie terminalu nie załadowałoby nowych definicji aliasów. Jedynym sposobem, w jaki mogłem go uruchomić, było za source ~/.bashrckażdym razem. Następnie spróbowałem przenieść moje definicje aliasów ~/.bash_profilei właśnie to załatwiło sprawę.

Mig82
źródło