Ich habe Aliase in /etc/profile.d/alias.sh für jede Login-Shell eingerichtet. Aber wenn ich script.sh ausführe, kann ich diesen Alias nicht verwenden. Wie kann ich Alias auch für Subshells oder untergeordnete Prozesse festlegen?
/etc/profile.d/alias.sh
alias rmvr='rm -rv';
alias cprv='cp -rv';
alias mvrv='mv -rv';
()
alias foo='echo foobar'
, Enter,(foo)
Outputsfoobar
.Dies liegt daran, dass /etc/profile.d/ nur von der interaktiven Anmeldeshell verwendet wird. Wird
/etc/bash.bashrc
jedoch von einer interaktiven Shell ohne Anmeldung verwendet.Da ich normalerweise einige globale Aliase für das System festlege, habe ich begonnen,
/etc/bashrc.d
eine Datei mit einigen globalen Aliasen zu erstellen :quelle
Wenn Sie möchten, dass sie an Unterschalen vererbt werden, verwenden Sie stattdessen Funktionen. Diese können in die Umgebung (
export -f
) exportiert werden , und für Unterschalen werden dann diese Funktionen definiert.Also, für eines Ihrer Beispiele:
Wenn Sie einige davon haben, stellen Sie diese zuerst für den Export ein:
quelle
Ähnliche Frage, ich wollte bash "Befehlsmodus" ausführen und Aliase zur Verfügung haben:
bash -i 'alias'
tut nichts. Aber ich habe das Flag -i entdeckt, mit dem die interaktiven Setups ausgeführt werdenbash -ci 'alias'
.Es scheint, dass Sie Ihre Frage umgehen können, indem Sie die Datei "beschaffen", z.
Dann funktionieren Aliase. FWIW ...
quelle