‘set alias’ para qualquer comando e o comando alias irá funcionar bem na linha de comandos interactiva, enquanto o aliasing não funciona dentro do programa.1. Shell Interactive

# alias ls1='ls -lrt'# ls1total 0-rw-r--r-- 1 root root 0 Oct 12 12:14 file1-rw-r--r-- 1 root root 0 Oct 12 12:14 file2

2. Dentro do script

# cat script.sh#!/bin/bash# Script to check the alias outputalias ls1='ls -lrt'ls1

# chmod +x script.sh# ./script.sh ./script.sh: line 3: ls1: command not found

Aliases não são expandidas quando o shell não interativo, a menos que o expand_aliases shell opção é definida usando shopt., Ele pode ser testado adicionando o comando “alias” ao script bash simples e a execução do script não dará o comando alias, enquanto na shell interativa ele irá fornecer a lista disponível de aliasing, como mostrado no exemplo acima.

From the man page of Bash:

Aliases are not expanded when the shell is not interactive, unless the expand_aliases shell option is set using shopt (see the description of shopt under SHELL BUILTIN COMMANDS below).

Making alias work in bash script

pode ser usada a seguinte abordagem, para fazer com que o comando alias funcione em scripts bash., Variáveis podem ser usadas no script bash para definir as opções preferidas para qualquer comando e essas variáveis podem ser referidas na seção posterior do script para bastar a necessidade de alias dentro dos scripts.

adicione o comando ‘shopt-s expand_aliases’ no início do programa para expandir os pseudónimos e fazer com que o comando alias funcione no programa bash.

# cat script.sh#!/bin/bash# Script to check the alias outputshopt -s expand_aliasesalias ls1='ls -lrt'ls1

# chmod +x script.sh# ./script.shtotal 0-rw-r--r-- 1 root root 0 Oct 12 12:14 file1-rw-r--r-- 1 root root 0 Oct 12 12:14 file2