Qual é a diferença entre set
, env
, declare
e export
ao definir uma variável em um shell Linux, tais como bash
?
linux
bash
shell
shell-script
user3872279
fonte
fonte
Respostas:
Parece que set e declare são um pouco diferentes, com set sendo mais poderoso.
Consulte "declare" em https://www.gnu.org/software/bash/manual/bash.html#Bash-Builtins declare: "Declare variáveis e atribua-lhes atributos. Se nenhum nome for fornecido, exiba os valores das variáveis em vez de.
Defina "set" em https://www.gnu.org/software/bash/manual/bash.html#The-Set-Builtin * set: "Este componente é tão complicado que merece sua própria seção. Set permite que você altere os valores das opções do shell e defina os parâmetros posicionais ou para exibir os nomes e valores das variáveis do shell ".
ENV é uma variável de ambiente no Bash: https://www.gnu.org/software/bash/manual/bash.html#Bash-Variables env é um comando do Linux. Eu acho que essa é uma boa referência: /unix/103467/what-is-env-command-doing
Eu pensei que esta era uma boa explicação para exportação: http://www.unix.com/302531838-post2.html
Também: https://www.gnu.org/software/bash/manual/bash.html#Bourne-Shell-Builtins * export (da Bourne): "Marque cada nome a ser passado para os processos filho no ambiente."
Emprestando código do URL acima:
fonte
declare
eset
eenv
? exportar vs declarar?Primeiro, você deve entender isso
environment variables
eshell variables
não é a mesma coisa.Então, você deve saber que os shells têm atributos que governam como ele funciona. Esses atributos não são variáveis de ambiente nem de shell.
Agora, responda sua pergunta.
env
: sem nenhuma opção, mostra as variáveis de ambiente atuais com seus valores; No entanto, pode ser usado para definir variável de ambiente para um único comando com o-i
sinalizadorset
: sem opções, o nome e o valor de cada variável do shell são exibidos * ~ da execuçãoman set
no rhel; também pode ser usado para definir o atributo shell . Este comando NÃO configura variável de ambiente nem shell .declare
: sem opções, o mesmo queenv
; também pode ser usado para definir variáveis de shellexport
: torna variáveis de ambiente variáveis de shellEm resumo:
set
não define shell nem variáveis de ambienteenv
pode definir variáveis de ambiente para um único comandodeclare
define variáveis de shellexport
faz variáveis de ambiente de variáveis de shellNOTA
declare -x VAR=VAL
cria a variável shell e também a exporta, tornando-a variável de ambiente.fonte