Skonfigurowałem aliasy w /etc/profile.d/alias.sh dla każdej powłoki logowania. Ale jeśli uruchomię skrypt.sh, nie będę mógł użyć tego aliasu. Jak ustawić alias nawet dla podpowłoki lub procesów potomnych?
/etc/profile.d/alias.sh
alias rmvr='rm -rv';
alias cprv='cp -rv';
alias mvrv='mv -rv';
()
alias foo='echo foobar'
, enter,(foo)
wyjściafoobar
.Jest tak, ponieważ /etc/profile.d/ jest używany tylko przez interaktywną powłokę logowania. Jest jednak
/etc/bash.bashrc
używany przez interaktywną powłokę niezalogowaną.Ponieważ zwykle ustawiam niektóre globalne aliasy dla systemu, zacząłem tworzyć miejsca, w
/etc/bashrc.d
których mogę upuścić plik z kilkoma globalnymi aliasami:źródło
Jeśli chcesz, aby były dziedziczone w podpowłokach, użyj zamiast nich funkcji. Można je wyeksportować do środowiska (
export -f
), a następnie podpowłoki będą miały zdefiniowane funkcje.Tak więc dla jednego z twoich przykładów:
Jeśli masz ich kilka, najpierw ustaw na eksport:
źródło
Podobne pytanie, chciałem uruchomić bash „tryb poleceń” i mieć dostępne aliasy:
bash -i 'alias'
nic nie robi. Ale odkryłem flagę -i, która uruchamia konfiguracje interaktywne, więc to:bash -ci 'alias'
działa.Wygląda na to, że w przypadku pytania można go obejść, „pozyskując” plik, np .:
Następnie działają aliasy. FWIW ...
źródło