3 votes

Comment écrire un script bash qui met en place des alias pour le script parent ?

J'essaie d'écrire un script qui va mettre en place des alias pour mon script bash, mais je ne veux pas source automatiquement dans .bashrc - J'ai besoin d'avoir les alias dans un sous-ensemble de mes terminaux.

Est-il possible de alias une commande dans un script et que la commande aliasée fonctionne pour le script à partir duquel le script a été exécuté ?

Fonctionnalité souhaitée :

$ alias
# ... no output here
$ ./my-script
$ alias
alias foo='bar'
alias alpha='beta'
...

6voto

Paul Carroll Points 659

Les alias sont privés pour les shells dans lesquels ils sont créés. Ils ne peuvent ni être exportés, ni être accédés depuis un Shell parent.

La solution la plus simple est de répartir les alias dans un fichier séparé, comme vous le suggérez, puis de créer le code source de ce fichier à la main, ou d'ajouter une fonction à votre système d'exploitation. .bashrc qui en sera la source lorsqu'elle sera invoquée.

function extra-aliases {
     . /path/to/file/containing/additional/aliases
}

2voto

David Points 344

Non. Les alias sont privés pour le Shell et les sous-shells.

1voto

Robert Points 51

Non.

Mais pour fournir une "solution", bien que je ne sache pas si c'est ce que vous voulez.

Essayez :

# alias
... nothing
# . ./myscript.sh
# alias
alias ls='ls -laR'

Notez le . avant ./myscript.sh . C'est source .

Ou pourquoi ne pas en faire un alias (dans .bashrc) :

alias mkalias="alias ls='ls -laR'; alias ll='ls -l'"

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X