Por que espaços não são permitidos em alguns comandos bash, como 'alias'? [fechadas]

1

Eu sei que o comando alias no bash não funcionará se houver espaços próximos ao sinal de igual. Por exemplo,

alias loadcode='vim *.c *.h Makefile'

funciona, mas

alias loadcode ='vim *.c *.h Makefile'

ou

alias loadcode= 'vim *.c *.h Makefile'

ou

alias loadcode = 'vim *.c *.h Makefile'

não funciona. Por que isso acontece?

    
por Tyler Durden 13.12.2017 / 15:12

2 respostas

3

Como alias pode ser usado para consultar aliases e definir vários aliases de uma só vez:

$ alias foo                       # query for one alias
bash: alias: foo: not found

$ alias foo = bar                 # query for three aliaes
bash: alias: foo: not found
bash: alias: =: not found
bash: alias: bar: not found

$ alias foo=bar doo=dar           # set two aliases
$ alias doo                       # query one alias
alias doo='dar'

$ alias foo = bar                 # query three, again
alias foo='bar'
bash: alias: =: not found
bash: alias: bar: not found

(não me pergunte por que o alias = não foi encontrado, em vez de dizer que é um nome inválido para um alias. O que eu acho que é, não consigo encontrar uma maneira de definir um alias desse nome.)

É claro que fazer isso também está de acordo com a forma como o espaço em branco funciona na atribuição de variável de shell:

$ foo=bar doo=dar
$ echo "$doo"
dar
    
por 13.12.2017 / 15:29
1

Espaços são permitidos, cumprindo seu dever usual de separar os argumentos da linha de comando.

Especificamente em relação a alias ....

Conceda a alias um argumento sem = e o alias tentará imprimir um alias existente com esse nome.

Mas dê a alias um argumento com = , então ele cria o novo alias.

Você pode combinar impressão e definição em uma linha se sentir necessidade.

    
por 13.12.2017 / 15:35

Tags