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.