Um substituto para aliases de Bash (algo que se comporta basicamente como um alias, mas não é um alias) [duplicado]

1

Eu preciso de um substituto para os aliases do Bash (algo que se comporta basicamente como um alias, mas não é um alias).

A razão pela qual eu preciso de um substituto é porque os scripts não podem utilizar aliases. Isso quer dizer --- um alias funciona bem quando eu o executo manualmente no Bash, mas ele não funciona quando executado como parte de um script. A solução que conheço é colocar os aliases em um arquivo temporário, mas não quero essa abordagem.

Existe algum atalho de comando substituto / semelhante que eu possa utilizar, algum "alias de próxima geração" (para dar uma metáfora) que se comportará exatamente como um alias, mas também será naturalmente acessível para scripts (após o arquivo ter sido originado) ?

    
por pntshere 24.01.2018 / 23:51

1 resposta

2

Em man bash :

Aliases are not expanded when the shell is not interactive, unless the expand_aliases shell option is set using shopt.

Então, eu acho que você precisa adicionar shopt expand_aliases no seu script bash .

Teste:

$ cat 1.sh 
#!/bin/bash
alias ll='ls -l'
ll $HOME

$ ./1.sh 
./1.sh: line 3: ll: command not found

$ cat 2.sh 
#!/bin/bash
shopt -s expand_aliases
alias ll='ls -l'
ll $HOME

$ ./2.sh 
total 12
...
    
por 25.01.2018 / 05:08

Tags