J'ai configuré des alias dans /etc/profile.d/alias.sh pour chaque shell de connexion. Mais si je lance script.sh, je ne peux pas utiliser cet alias. Comment puis-je définir un alias même pour les sous-coquilles ou les processus enfants?
/etc/profile.d/alias.sh
alias rmvr='rm -rv';
alias cprv='cp -rv';
alias mvrv='mv -rv';
()
alias foo='echo foobar'
enter,(foo)
outputsfoobar
.C'est parce que /etc/profile.d/ est utilisé uniquement par le shell de connexion interactif. Cependant,
/etc/bash.bashrc
est utilisé par un shell interactif sans connexion.Comme j'ai l'habitude de définir des alias globaux pour le système, j'ai commencé à créer
/etc/bashrc.d
où je peux déposer un fichier avec des alias globaux:la source
Si vous voulez qu'ils soient hérités des sous-shells, utilisez plutôt des fonctions. Ceux-ci peuvent être exportés vers l'environnement (
export -f
), et les sous-shells auront alors ces fonctions définies.Donc, pour l'un de vos exemples:
Si vous en avez plusieurs, définissez d'abord l'exportation:
la source
Question similaire, je voulais exécuter bash "mode de commande" et avoir des alias disponibles:
bash -i 'alias'
ne fait rien. Mais j'ai découvert le drapeau -i qui exécute les configurations interactives, donc ceci:bash -ci 'alias'
fonctionne.Pour votre question, il semble que vous pouvez le contourner en "approvisionnant" le fichier, par exemple:
Ensuite, les alias fonctionnent. FWIW ...
la source