Wie sind Aliase in der Haupt-Shell, aber nicht in der Sub-Shell verfügbar?

2

Ich habe einen Text gelesen und es heißt:

Die .bashrc-Shell-Konfigurationsdatei wird jedes Mal ausgeführt, wenn Sie eine BASH-Shell generieren, z. B. wenn Sie ein Shell-Skript ausführen. Mit anderen Worten, jedes Mal, wenn eine Subshell erstellt wird, wird die .bashrc-Datei ausgeführt. Dadurch werden alle lokalen Variablen oder Aliase exportiert, die Sie in der .bashrc-Shell-Initialisierungsdatei definiert haben.

Ich habe auch gelesen, dass jedes Mal, wenn ich ein Shell-Skript (etwa script1.sh ) ausführe , eine Subshell erstellt wird. Wenn diese Subshell erstellt wird, muss die .bashrc- Datei ausgeführt werden, und daher müssen in .bashrc definierte Aliasnamen in der Subshell verfügbar sein (was nicht der Fall ist). Und wenn Alias ​​(s) in dieser Subshell nicht verfügbar sind, wie sind sie dann in der Hauptshell verfügbar (über die ich mein Skript ausführe)?

shiva
quelle
1
Sie benötigen ein interactive shell/subshell, um die in.bashrc
C0deDaedalus
2
Außerdem man bashzeigt Ihnen das Ausführen von a , dass "Aliase nicht erweitert werden, wenn die Shell nicht interaktiv ist, es sei denn, die Shell-Option expand_aliases wurde mit shopt festgelegt (siehe die Beschreibung von shopt unter SHELL BUILTIN COMMANDS unten)."
C0deDaedalus