Help Noções básicas sobre linha no .bashrc

3

Eu tentei procurar em todos os lugares para determinar o que esta linha faz no meu .bashrc. A razão pela qual eu quero saber é porque agora ~ / .pam_environment é recomendado . Esta é a linha:

[[ -s /home/$USER/.nvm/nvm.sh ]] && . /home/$USER/.nvm/nvm.sh

Acho que limitei as verificações de condição para garantir que o arquivo nvm.sh exista e que ele seja maior que 0 bytes. Mas eu não entendo o que segue. && normalmente significa "e" mas não entendo porque isso seria necessário após uma verificação e também porque o . não está anexado ao nome do arquivo.

Basicamente, o que eu quero saber é, como eu colocaria isso no meu arquivo .pam_environment , que só usa expressões de assigment.

Editar: Esta linha atualmente permite que eu execute NVM a partir do terminal, mas eu realmente gostaria de saber apenas por uma questão de aprendizagem.

    
por Adam Beck 20.06.2013 / 06:48

1 resposta

3

Sim, você está certo de que [[ -s ... ] verifica se existe um arquivo. Em caso afirmativo, sairá com o status 0 e, se não, sairá como 1 (ou seja, falhará).

O comando && / operator / whatever executa o próximo comando se o comando tiver sido bem-sucedido (ou seja, o status de saída é 0 ). || , ao contrário, executa o próximo comando se o comando falhar antes (ou seja, não 0 ).

Ter . antes do nome do arquivo (com espaços em branco no meio) executa o arquivo, mas também mantém qualquer alteração nas variáveis de ambiente que ele faz. Por exemplo, se eu fizer test.sh como este:

#!/bin/bash
FOO=bar
BAR=baz
BAZ=foo
PATH="FOO:$PATH"

e eu executo . path/to/test.sh , haverá novas variáveis: FOO , BAR e BAZ e PATH serão atualizados. Observe que source , penso eu, faz o mesmo que . . EDITAR : Sim, source e . são sinônimos no bash.

    
por MiJyn 20.06.2013 / 07:03