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:.

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

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).


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.

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:.

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ę.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.