의 차이는 무엇인가 set
, env
, declare
와 export
같은 리눅스 쉘에서 변수를 설정할 때 bash
?
의 차이는 무엇인가 set
, env
, declare
와 export
같은 리눅스 쉘에서 변수를 설정할 때 bash
?
답변:
set과 선언이 약간 다르고 set이 더 강력 해 보입니다.
https://www.gnu.org/software/bash/manual/bash.html#Bash-Builtins의 "declare"를 참조하십시오 : "변수를 선언하고 속성을 제공하십시오. 이름이 없으면 변수의 값을 표시하십시오 대신에.
https://www.gnu.org/software/bash/manual/bash.html#The-Set-Builtin * set 에서 "set"을 설정하십시오. "이 내장은 너무 복잡하여 자체 섹션이 필요합니다. 쉘 옵션의 값을 변경하고 위치 매개 변수를 설정하거나 쉘 변수의 이름과 값을 표시합니다. "
ENV는 Bash의 환경 변수입니다. https://www.gnu.org/software/bash/manual/bash.html#Bash-Variables env는 Linux 명령입니다. 나는 이것이 좋은 참조라고 생각한다 : /unix/103467/what-is-env-command-doing
나는 이것이 수출에 대한 좋은 설명이라고 생각했다 : http://www.unix.com/302531838-post2.html
또한 : https://www.gnu.org/software/bash/manual/bash.html#Bourne-Shell-Builtins * 내보내기 (Bourne에서) : "각 이름이 환경의 하위 프로세스로 전달되도록 표시하십시오."
위 URL에서 코드 대여 :
root@linux ~# x=5 <= here variable is set without export command
root@linux ~# echo $x
5
root@linux ~# bash <= subshell creation
root@linux ~# echo $x <= subshell doesnt know $x variable value
root@linux ~# exit <= exit from subshell
exit
root@linux ~# echo $x <= parent shell still knows $x variable
5
root@linux ~# export x=5 <= specify $x variable value using export command
root@linux ~# echo $x <= parent shell doesn't see any difference from the first declaration
5
root@linux ~# bash <= create subshell again
root@linux ~# echo $x <= now the subshell knows $x variable value
5
root@linux ~#
declare
과 set
와 env
? 수출 대 선언?
첫째, 당신은 이해한다 environment variables
와 shell variables
같은 것이 아니다.
그런 다음 쉘에는 작동 방식을 제어하는 속성 이 있음을 알아야 합니다. 이러한 속성은 환경 변수 나 쉘 변수가 아닙니다.
이제 질문에 대답하겠습니다.
env
: 옵션없이 현재 환경 변수 를 해당 값으로 표시합니다. 그러나 -i
플래그 를 사용하여 단일 명령에 대한 환경 변수를 설정하는 데 사용할 수 있습니다set
: 옵션이 없으면 각 쉘 변수 의 이름과 값이 man set
rhel 로 실행 하여 표시됩니다 . 쉘 속성 을 설정하는 데에도 사용할 수 있습니다 . 이 명령은 환경이나 쉘 변수를 설정 하지 않습니다 .declare
: 옵션없이 env
; 쉘 변수 를 설정하는데도 사용할 수 있습니다export
: 쉘 변수를 환경 변수로 만듭니다.한마디로 :
set
쉘이나 환경 변수를 설정하지 않습니다env
단일 명령에 대한 환경 변수를 설정할 수 있습니다declare
쉘 변수를 설정export
쉘 변수를 환경 변수로 만듭니다.참고
declare -x VAR=VAL
셸 변수를 작성하고 내 보내서 환경 변수로 만듭니다.