-
$-
significa 'flags atuais'. -
echo $-
retorna "himBH". Esses são todos os padrões. - então ...
[[ $- != *i* ]] && return
realmente faz o que diz acima em um comentário: ele verifica se o sinalizador interativo está definido. O [[e]] faz dele um booleano, então acaba em um "verdadeiro" ou "falso". "false & amp; & amp; return" faz com que ele continue "true & amp; &; return" faz com que ele execute o retorno.
Os sinalizadores padrão são explicados em mais detalhes:
h é para "hash all": isso diz ao bash para lembrar os locais dos comandos encontrados através da consulta do seu PATH.
i é para "interativo": inserindo entrada & amp; voltando a saída.
m é para "monitor": isso permite o controle do trabalho
B é para "expansão de contraventamento". Isso permite que você use a expansão de chave
H é para "histórico expandido". Isso é o que permite que você reexecute um comando do seu histórico, precedendo seu número com um ponto de exclamação
A propósito. Eu tenho ...
# If not running interactively, don't do anything
case $- in
*i*) ;;
*) return;;
esac
Basicamente faz o mesmo, mas mais fácil de ler, eu suponho.