Czytałem jakiś tekst, który stwierdza:
Plik konfiguracyjny powłoki .bashrc jest faktycznie wykonywany za każdym razem, gdy generujesz powłokę BASH, na przykład po uruchomieniu skryptu powłoki. Innymi słowy, za każdym razem, gdy tworzona jest podpowłoka, wykonywany jest plik .bashrc. Powoduje to eksportowanie lokalnych zmiennych lub aliasów zdefiniowanych w pliku inicjującym powłokę .bashrc.
Przeczytałem również, że za każdym razem, gdy uruchamiam skrypt powłoki (powiedzmy skrypt1.sh ), tworzona jest podpowłoka. Kiedy więc tworzona jest ta podpowłoka, plik .bashrc musi zostać wykonany, a zatem aliasy zdefiniowane w .bashrc muszą być dostępne w podpowłoce (które nie są). A jeśli aliasy nie są dostępne w tej podpowłoce, to w jaki sposób są one dostępne w głównej powłoce (przez którą wykonuję skrypt)?
man bash
pokaże, że „Aliasy nie są rozwijane, gdy powłoka nie jest interaktywna, chyba że ustawiono opcję powłoki expand_aliases za pomocą shopt (patrz opis shopt w POLECENIA WBUDOWANE POWŁOKI poniżej).”
interactive shell/subshell
w celu wykonania aliasów zdefiniowanych w.bashrc