O til é expandido na atribuição para PATH
, porque é uma atribuição variável e o til vem logo após um cólon sem aspas (no seu exemplo).
A "tilde-prefix" consists of an unquoted <tilde>
character at the beginning of a word, followed by all of the characters preceding the first unquoted <slash>
in the word, or all the characters in the word if there is no <slash>
. In an assignment (see XBD Variable Assignment), multiple tilde-prefixes can be used: at the beginning of the word (that is, following the <equals-sign>
of the assignment), following any unquoted <colon>
, or both.
(de o texto POSIX na expansão do til )
O manual bash
coloca como
Each variable assignment is checked for unquoted tilde-prefixes
immediately following a :
or the first =
. In these cases, tilde
expansion is also performed. Consequently, one may use filenames with
tildes in assignments to PATH
, MAILPATH
, and CDPATH
, and the shell
assigns the expanded value.
Isso significa que atribuir a string não cotada /program_files:~/home/t
a PATH
expandirá o til interno e que $PATH
será a sequência com o til expandido.
Colocar um til literal em PATH
, por exemplo, citando a string, fará com que a resolução de nome de caminho dos comandos falhe para esse diretório (a menos que haja um diretório no diretório de trabalho atual com esse nome literal).
bash
quando não estiver no modo POSIX, ainda expandirá esses tils em PATH
ao procurar por comandos.
Quando o shell varre a linha
mypath=/program_files:~/home/t
é retornado ao analisador como um único token. Ele será processado como um comando simples.
Um comando simples, quando reconhecido como uma atribuição, sofre, entre outras coisas, a expansão do til. Ao fazer a expansão do til no lado direito do =
, o shell expandirá o til na string para o diretório inicial do usuário atual, porque ocorre logo após dois pontos.
Veja também o texto POSIX em comandos simples .