Es gibt zwei verwandte Gründe, warum Aliase nicht immer funktionieren, wenn sie in die .profile
Datei eingefügt werden. Das erste ist, dass die .profile
(oder .bash_profile
) Datei nur für eine Anmeldeshell ausgeführt wird. Wenn Sie bash in einem Terminalfenster unter X starten, führt Ihr Terminalemulator (z. B. gnome-termanl) bash wahrscheinlich nicht als Login-Shell aus. [Die meisten haben die Möglichkeit, dies zu ändern, wenn Sie möchten, aber die Standardeinstellung (für gnome-termal sowieso) besteht darin, es nicht als Login-Shell auszuführen.]
Die Shell ist eine interaktive Shell und .bashrc
wird daher ausgeführt.
Normalerweise wurde Bash jedoch als Anmeldeshell ausgeführt, als die X-Sitzung gestartet wurde. Wenn also Alias-Befehle enthalten .profile
sind, wurden diese zusammen mit dem Festlegen von Umgebungsvariablen wie PATH usw. ausgeführt. Wenn ein Terminalfenster geöffnet wird, wird eine neue Instanz von bash ausgeführt, um zur Eingabe aufzufordern und Befehle in diesem Terminalfenster auszuführen. Im Gegensatz zu Umgebungsvariablen können Aliase nicht von einer Bash-Instanz in eine neue exportiert werden, die von ihr gestartet wurde. Die Aliase werden also nicht an die neue Shell weitergegeben.
Versuchen Sie dieses Experiment, um dies zu sehen:
export ROBERT=bob
alias james=jimmy
echo $ROBERT
alias james
bash #start a new bash instance
echo $ROBERT
alias james
exit #end the new bash instance and revert to the original one
echo $ROBERT
alias james
Beachten Sie, dass .bashrc
bash nicht ausgeführt wird, wenn es als Anmeldeshell gestartet wird. Das Platzieren Ihrer Aliase dort funktioniert also nicht immer, es sei denn, Ihre .bashrc
stammen von Ihnen .profile
, was eine sehr verbreitete Praxis ist.
gl
? Das Terminal? Die GUI?