답변:
bash의 경우 : (우분투의 표준 쉘)
모든 환경 변수를 인쇄하려면 터미널에 다음 명령을 입력하십시오.
printenv
이 명령에 대한 자세한 내용은 printenv
매뉴얼 페이지를 참조하십시오 .
"쉘 변수"를 포함하는 목록을 표시하려면 다음 명령을 입력하십시오.
( set -o posix ; set ) | less
이것은 당신에게 보여줄 것이다 뿐만 아니라 쉘 변수 만 환경 변수도 있습니다.
이 주제와 관련된 자세한 정보는 다음을 읽으십시오.
zsh의 경우 : (고급 쉘)
다음 명령을 사용하십시오.
( setopt posixbuiltin; set; ) | less
ZSH 옵션에 대한 자세한 내용은 zshoptions
매뉴얼 페이지를 참조 하십시오 .
MYNEWVARIABLE=Ubuntu
실행 printenv
하면 거기에 표시되지 않습니다. 그 이유는 무엇이며 다른 사람들은 어떻게 나타 납니까?
export MYNEWVARIABLE=Ubuntu
하면 예상대로 작동합니다.
set
만든 변수도 나열됩니다. 또는set | grep myvar
printenv
외부 명령이므로 내 보낸 환경 변수에 대해서만 알고 인쇄합니다. set
내부 bash 명령이므로 모든 "쉘 변수"(내 보낸 환경 변수)와 내 보낸 환경 변수가 표시됩니다.
unset MYNEWVARIABLE; MYNEWVARIABLE=Ubuntu; printenv | grep MYNEW
,하지만 의지 unset MYNEWVARIABLE; export MYNEWVARIABLE=Ubuntu; printenv | grep MYNEW
,이 뜻 unset MYNEWVARIABLE; MYNEWVARIABLE=Ubuntu printenv | grep MYNEW
. export를 사용하면 "설정 한 변수는이 셸의 변수뿐만 아니라 프로세스에 전달되는 환경의 일부 여야합니다."라고 말합니다. 세 번째 예는 "이 변수는이 프로세스로 전달되는 환경의 일부 여야하지만 나중에는 달라지지 않아야합니다"라고 말합니다.
나는이 질문이 상당히 오래되어 답변을 받았지만 약간의 유용한 정보를 추가 할 수 있다고 생각합니다.
위에서 설명한 모든 방법에서 제안되는 절차는 다음과 같습니다.
env
,
printenv
또는 무엇이든 사용하여 환경 변수 표시이 솔루션의 문제점은 터미널에서 실행되는 쉘 의 환경 변수 를 보고 있다는 것입니다 . 예를 들어 그래픽 인터페이스에서 직접 애플리케이션 실행에 사용 가능한 환경 변수가 표시되지 않습니다.
예를 들어, 경로에 디렉토리를 추가하는 것과 같이 환경 변수를 수정 하기 위해 ~/.profile
, 또는 .bashrc
, 또는 .zshenv
(쉘에 따라)을 사용하는 경우에 눈에 able니다 .
응용 프로그램에서 사용 가능한 환경 변수를 그래픽 환경에서 직접 시작한 것을 보려면 다음을 수행하십시오 (Gnome Shell에서는 다른 모든 DE에 동등한 방법이 있다고 확신합니다).
xterm -e bash --noprofile --norc
(당신이없는 경우 또는 xterm
, gnome-terminal -- bash --noprofile --norc
--- 감사는 코멘트 Nakis를 @ 마이크합니다).
이제 환경 변수를 추가하지 않은 쉘이있는 터미널이 있습니다. 당신이 사용할 수있는 env
모든 환경 변수를 나열하려면 여기를 :
분명히 새로운 쉘에는 시스템 파일에 의해 추가 된 환경 변수가 있지만, 그 변수는 어쨌든 시스템의 모든 프로그램에 (상속 적으로) 사용 가능해야합니다.
이 트릭을 다시 검색하고 내 .pam_environment
파일을 확인 해야하는 네 번째이기 때문에 이것을 게시하고 있습니다. 이제 더 빨리 찾을 것입니다 (그리고 그 과정에서 다른 사람을 돕고 싶습니다 ...)
xterm -e bash --noprofile --norc
그래픽 인터페이스로 Ubuntu를 시작할 때 시작 파일을 읽고 실행하지 않기 때문에 권장 했습니까 ? 참조 askubuntu.com/q/1025845/1471
gnome-terminal -- bash --noprofile --norc
터미널에서 환경 변수를 CTRL+ ALT+로 나열하려면 command T를 사용할 수 있습니다 env
.
예를 들면 다음과 같습니다.
[raja@localhost ~]$ env
XDG_VTNR=1
SSH_AGENT_PID=3671
XDG_SESSION_ID=3
HOSTNAME=localhost.localdomain
IMSETTINGS_INTEGRATE_DESKTOP=yes
GPG_AGENT_INFO=/home/raja/.gnupg/S.gpg-agent:3691:1
GLADE_PIXMAP_PATH=:
TERM=xterm-256color
SHELL=/bin/bash
XDG_MENU_PREFIX=xfce-
DESKTOP_STARTUP_ID=
HISTSIZE=1000
XDG_SESSION_COOKIE=0250277dd805498381e96c05d88068b0-1364679772.845276-1676152201
WINDOWID=65011716
GNOME_KEYRING_CONTROL=/home/raja/.cache/keyring-N3QoQ2
IMSETTINGS_MODULE=none
QT_GRAPHICSSYSTEM_CHECKED=1
USER=raja
기타
그것이 도움이되기를 바랍니다.
여기서 대부분의 솔루션은 환경 변수 만 인쇄하거나 env 또는 (set -o posix; posix)가 구문 분석 가능한 형식으로 값을 인쇄하지 않는 단점이 있습니다 (변수 A = $ 'a \ r \ nb'...를 인쇄하십시오). .
다음은 POSIX 이스케이프 형식으로 모든 변수를 한 줄에 하나의 변수로 인쇄하는 함수입니다.
function dump_vars {
local VARNAME
compgen -v | while read -r VARNAME; do
printf "$VARNAME=%q\n" "${!VARNAME}"
done
}
compgen -v 사용을 지적한 @tmgoblin에게 감사드립니다.
env 는 POSIX 7 방식입니다 .
export asdf=qwer
env | grep asdf
샘플 출력 :
asdf=qwer
익스포트 된 변수 만 표시합니다. 익스포트되지 않은 변수는 일반적으로 "환경 변수"로 간주되지 않습니다.
printenv
POSIX가 아닌 over를 선호하십시오 . 둘 다 인수없이 같은 일을하는 것 같습니다 : https://unix.stackexchange.com/questions/123473/what-is-the-difference-between-env-and-printenv
env
더 나은 서식을 더 볼 수, 나는 더 많은 정보를 추가했습니다.