export VARIABLE_NAME='some value' é o caminho para definir uma variável de ambiente em qualquer shell compatível com POSIX ( sh , dash , bash , ksh , etc .; também zsh). Se a variável já tiver um valor, você pode usar export VARIABLE_NAME para torná-la uma variável de ambiente sem alterar seu valor.
Pré-POSIX Bourne shells não suportam isso, e é por isso que você verá scripts que evitam export VARIABLE_NAME='some value' e use VARIABLE_NAME='some value'; export VARIABLE_NAME . Mas as cápsulas Bourne pré-POSIX são extremamente raras hoje em dia.
setenv VARIABLE_NAME='some value' é a sintaxe csh para definir uma variável de ambiente. Ao contrário de sh, setenv VARIABLE_NAME . setenv não existe em sh, e csh é extremamente raramente usado em scripts e foi ultrapassado pelo bash para uso interativo nos últimos 20 anos (e zsh por mais tempo), então você pode esquecê-lo a menos que você o encontre.
O comando env é muito raramente útil, exceto em linhas shebang . Quando invocado sem argumentos, ele exibe o ambiente, mas export o faz melhor (classificado e frequentemente cotado para desambiguar novas linhas em valores de novas linhas que separam valores. Quando invocado com argumentos, ele executa um comando com variáveis de ambiente extras, mas o o mesmo comando sem env também funciona ( VAR=value mycommand runs mycommand com VAR definido como value , assim como env VAR=value mycommand ). O motivo env é útil na linha shebang porque ele executa PATH lookup, e acontece de não fazer mais nada quando invocado com um nome de comando.O comando env pode ser útil para executar um comando com apenas algumas variáveis de ambiente com -i , ou sem parâmetros para exibir o ambiente incluindo variáveis com nomes inválidos que o shell não importa.