Jak aliasy są dostępne w głównej powłoce, ale nie w podpowłoce?


2

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


1
Musisz mieć interactive shell/subshellw celu wykonania aliasów zdefiniowanych w.bashrc
C0deDaedalus

2
Wykonanie również man bashpokaż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).”
C0deDaedalus

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.