Como eu escrevo um script bash que configura aliases para o shell pai?

3

Eu estou tentando escrever um script que irá configurar aliases para o meu shell bash, mas eu não quero source automaticamente em .bashrc - Eu preciso ter os aliases em um subconjunto de meus terminais .

É possível alias um comando em um script e o comando aliased funciona para o shell do qual o script foi executado?

Funcionalidade desejada:

$ alias
# ... no output here
$ ./my-script
$ alias
alias foo='bar'
alias alpha='beta'
...
    
por stickmangumby 09.12.2010 / 00:44

3 respostas

6

Os aliases são privados dos shells em que são criados. Eles não podem ser exportados nem podem ser acessados a partir de um shell pai.

A solução mais fácil é dividir os aliases em um arquivo separado, como você sugere, e então fazer a fonte desse arquivo manualmente, ou adicionar uma função ao seu .bashrc , que irá obtê-los quando invocado.

function extra-aliases {
     . /path/to/file/containing/additional/aliases
}
    
por 09.12.2010 / 00:48
2

Não. Os aliases são privados para o shell e subshells.

    
por 09.12.2010 / 00:48
1

Não.

Mas para fornecer uma 'solução', embora eu não saiba se é o que você deseja.

Tente:

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

Observe o . antes de ./myscript.sh . Isso é source .

Por que não criar um alias (em .bashrc):

alias mkalias="alias ls='ls -laR'; alias ll='ls -l'"
    
por 09.12.2010 / 00:58

Tags