Ele verifica se você tem permissão para r
ead o arquivo $PosConfigDir/posconfig.sh
, depois da resolução do link simbólico, depois fontes desse arquivo.
Não garante que você possa ler o arquivo. Por exemplo, na maioria dos sistemas, [ -r / ]
retornaria verdadeiro, mas você não pode ler /
.
-r
é um operador de teste padrão .
.
é um comando embutido especial de shells semelhantes a Bourne que informa o shell para ler e interpretar o código no arquivo dado como argumento. source
é o comando equivalente em csh
. Muitos shells modernos semelhantes a Bourne entendem source
como um alias para .
.
Com algumas implementações de shell, a falha de .
de abrir ou ler o arquivo faria com que o shell fosse interrompido (após ter gerado uma mensagem de erro). Provavelmente, o -r
check destina-se a evitar isso nesse caso.
Para evitar que o shell aborte, em shells POSIX, uma alternativa poderia ser
command . "$PosConfigDir/posconfig.sh"
(Embora a construção acima não funcione em zsh
a menos que em sh
ou ksh
emulação)
Para evitar a mensagem de erro, você precisaria redirecionar a saída do stderr para /dev/null
, mas isso teria o efeito colateral indesejado de também silenciar os erros dos comandos em postconfig.sh
.
Um exemplo:
$ [ -r /etc/os-release ] && . /etc/os-release
$ printf '%s\n' "$PRETTY_NAME"
Debian GNU/Linux 8 (jessie)
PRETTY_NAME
foi definido em /etc/os-release
file:
$ head -n 1 /etc/os-release
PRETTY_NAME="Debian GNU/Linux 8 (jessie)"