Linux 쉘에서 변수를 설정할 때 set, env, declaration 및 export의 차이점은 무엇입니까?


답변:


5

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 ~#

declaresetenv? 수출 대 선언?
Pacerier

나는 단순히 질문에 대답하지 않기 때문에 이것을 공감해야합니다.
Daniel C. Sobral

이것이 더 나은지 알려주세요.
Shawn P.

1

첫째, 당신은 이해한다 environment variablesshell variables같은 것이 아니다.

그런 다음 쉘에는 작동 방식을 제어하는 속성 이 있음을 알아야 합니다. 이러한 속성은 환경 변수 나 쉘 변수가 아닙니다.

이제 질문에 대답하겠습니다.

  1. env: 옵션없이 현재 환경 변수 를 해당 값으로 표시합니다. 그러나 -i플래그 를 사용하여 단일 명령에 대한 환경 변수를 설정하는 데 사용할 수 있습니다
  2. set: 옵션이 없으면 각 쉘 변수 의 이름과 값이 man setrhel 로 실행 하여 표시됩니다 . 쉘 속성 을 설정하는 데에도 사용할 수 있습니다 . 이 명령은 환경이나 쉘 변수를 설정 하지 않습니다 .
  3. declare: 옵션없이 env; 쉘 변수 를 설정하는데도 사용할 수 있습니다
  4. export: 쉘 변수를 환경 변수로 만듭니다.

한마디로 :

  1. set 쉘이나 환경 변수를 설정하지 않습니다
  2. env 단일 명령에 대한 환경 변수를 설정할 수 있습니다
  3. declare 쉘 변수를 설정
  4. export 쉘 변수를 환경 변수로 만듭니다.

참고 declare -x VAR=VAL 셸 변수를 작성하고 내 보내서 환경 변수로 만듭니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.