환경변수를 인쇄/반향하는 방법
설정 중인 환경변수를 인쇄하려면 어떻게 해야 합니까?
NAME=sam echo "$NAME" # empty
여기서 보실 수 있는 것은eval그건 효과가 있다.이 길인가요?
NAME=sam eval 'echo $NAME' # => sam
이러한 명령어는 다음과 같이 서로 다른 명령어로 사용해야 합니다.
NAME=sam; echo "$NAME"
NAME=sam && echo "$NAME"
확장$NAME빈 문자열은 실행 전에 셸에 의해 실행됩니다.echo그래서 그 당시에NAME변수가 에 전달됩니다.echo(null 문자열로) 이미 확장되었습니다.
하나의 명령으로 동일한 결과를 얻으려면:
NAME=sam printenv NAME
기존 답변을 중요한 설명과 함께 정리하려면 다음 절차를 따릅니다.
앞에서 설명한 바와 같이NAME=sam echo "$NAME"그것이다$NAME할당 전에 현재 셸에 의해 확장됩니다.NAME=sam유효하게 됩니다.
(효과적이지 않은) 솔루션 시도의 원래 의미를 유지하는 솔루션NAME=sam echo "$NAME"):
둘 중 하나를 사용하다eval[1] (질문 자체에서와 같이) 또는printenv(Aaron McDaid가 Heemayl의 답변에 추가) 또는bash -c(LJm Dullaart의 답변에서), 효율성 내림차순으로:
NAME=sam eval 'echo "$NAME"' # use `eval` only if you fully control the command string
NAME=sam printenv NAME
NAME=sam bash -c 'echo "$NAME"'
printenv는 POSIX 유틸리티는 아니지만 Linux와 MacOS/BSD 모두에서 사용할 수 있습니다.
이 스타일의 호출(<var>=<name> cmd ...)는, 정의하기 위한 것입니다.NAME:
- 환경변수로서
- 이 명령어는 호출되는 명령어에 대해서만 정의됩니다.
즉, 다음과 같습니다.NAME호출되는 명령어(자녀 프로세스)에만 존재하며 현재 셸에는 영향을 주지 않습니다(이름 있는 변수가 없는 경우).NAME이전에도 존재했지만, 그 이후에는 존재하지 않을 것이다;기존재NAME변수는 변경되지 않습니다).
POSIX는 명령어 검색 및 실행 장에서 이러한 종류의 호출 규칙을 정의합니다.
다음 솔루션은 매우 다르게 동작합니다(Heemayl의 답변과 인용).
NAME=sam; echo "$NAME"
NAME=sam && echo "$NAME"
같은 출력이 생성되지만 대신 다음과 같이 정의됩니다.
- 환경변수가 아닌 셸변수(전용
- 한다면
echo환경 변수에 의존하는 명령어입니다.NAME정의되지 않습니다(또는 이전과 다르게 정의될 수 있습니다.
- 한다면
- 명령어 이후에도 계속됩니다.
모든 환경변수는 셸변수로서도 공개되지만 그 반대는 아닙니다.셸변수는 현재 셸과 그 서브셸에만 표시되며 외부유틸리티나 (소싱되지 않은) 스크립트 등의 하위 프로세스에는 표시되지 않습니다(셸변수가 환경변수로 지정되어 있지 않은 경우).export ★★★★★★★★★★★★★★★★★」declare -x를 참조해 주세요.
말하면 [1] 밀] [ [ [ [bashPOSIX」와 )zsh : : ★★eval는 특수 셸을 내장하고 있습니다.NAME=sam.$NAME명령어가 종료된 후에도 범위 내에 남습니다만, 실제로는 그렇지 않습니다.
you만을 하면 행행 however however however however howeverbashPOSIX 호환성 모드에서는 호환성이 있습니다.
dash ★★★★★★★★★★★★★★★★★」ksh는 항상 준거하고 있습니다.
정확한 규칙은 복잡하며 일부 측면은 구현에 따라 결정됩니다. 다시 "명령어 검색 및 실행"을 참조하십시오.
또, 통상의 면책 조항이 적용됩니다.완전히 제어하거나 암묵적으로 신뢰하는 입력에만 사용하십시오.
이것도 세미콜론으로 작동한다.
NAME=sam; echo $NAME
구문
variable=value command
는 특정 프로세스의 환경변수를 설정하는 데 자주 사용됩니다.그러나 어떤 공정이 어떤 변수를 얻고 누가 해석하는지 이해해야 합니다.예를 들어, 2개의 셸을 사용합니다.
a=5
# variable expansion by the current shell:
a=3 bash -c "echo $a"
# variable expansion by the second shell:
a=3 bash -c 'echo $a'
결과는 첫 번째 에코의 경우 5, 두 번째 에코의 경우 3이 됩니다.
Windows에서는, 이하고, Windows 의 「」, 「CLI」로할 수 .C:\Users\dir\env | more
env 명령어를 사용하면 시스템에 설정된 모든 환경변수를 표시할 수 있습니다.목록이 길기 때문에 읽기 쉽도록 출력을 더 많이 파이프에 연결합니다.
언급URL : https://stackoverflow.com/questions/40050793/how-to-print-echo-environment-variables
'source' 카테고리의 다른 글
| Enum을 ASP의 DropDownList 컨트롤에 바인드하려면 어떻게 해야 합니다.인터넷? (0) | 2023.04.22 |
|---|---|
| Windows 재귀 GREP 명령줄 (0) | 2023.04.22 |
| Excel VBA - 범위전치 페이스트 복사 (0) | 2023.04.22 |
| XAML에서의 TimeSpan 포맷 방법 (0) | 2023.04.22 |
| 선택한 ListBox 항목의 배경색 변경 (0) | 2023.04.22 |