SW/리눅스

Linux : 환경 변수 설정 방법, 예제, 명령어

얇은생각 2021. 7. 29. 07:30
반응형

Linux 및 Unix 기반 시스템 환경에서 변수는 셸 또는 하위 셸에서 실행되는 응용 프로그램에서 사용하는 동적 명명된 값 집합입니다. 간단히 말해서 환경 변수는 이름과 관련 값을 가진 변수입니다.

환경 변수를 사용하면 시스템의 작동 방식 및 시스템의 응용 프로그램 동작을 사용자 지정할 수 있습니다. 예를 들어 환경 변수는 기본 텍스트 편집기 또는 브라우저, 실행 파일 경로 또는 시스템 로캘 및 키보드 레이아웃 설정에 대한 정보를 저장할 수 있습니다.

환경 및 셸 변수를 읽고 설정하는 방법을 설명합니다.

 

 

Linux : 환경 변수 설정 방법, 예제, 명령어

 

 

환경 변수 및 셸 변수

변수의 형식은 다음과 같습니다.

KEY=value
KEY="Some other value"
KEY=value1:value2

 

 

변수의 이름은 대소문자를 구분합니다. 일반적으로 환경 변수에는 대문자로 된 CASE 이름이 있어야 합니다.

변수에 값을 여러 개 할당할 때는 콜론 문자(colon: column)로 구분해야 합니다.

등가 = 기호 주변에 공백이 없습니다.

 

변수는 환경 변수와 셸 변수의 두 가지 주요 범주로 분류할 수 있습니다.

환경 변수는 시스템 전체에서 사용할 수 있으며 생성된 모든 하위 프로세스 및 셸에서 상속되는 변수입니다.

셸 변수는 현재 셸 인스턴스에만 적용되는 변수입니다. zsh 및 bash와 같은 각 셸에는 고유한 내부 셸 변수 집합이 있습니다.

Linux에서 환경 변수를 나열하고 설정할 수 있는 여러 가지 명령을 사용할 수 있습니다.

 

env – 명령을 사용하면 현재 프로그램을 수정하지 않고 사용자 지정 환경에서 다른 프로그램을 실행할 수 있습니다. 인수 없이 사용할 경우 현재 환경 변수 목록이 인쇄됩니다.

printenv – 명령어는 모든 또는 지정된 환경 변수를 인쇄합니다.

set – 명령어는 셸 변수를 설정하거나 해제합니다. 인수 없이 사용할 경우 환경 및 셸 변수와 셸 함수를 포함한 모든 변수 목록을 인쇄합니다.

unset – 셸 및 환경 변수를 삭제합니다.

export – 명령은 환경 변수를 설정합니다.

 

 

 

환경 변수 나열

환경 변수를 표시하는 데 가장 많이 사용되는 명령은 printenv입니다. 변수의 이름이 명령에 인수로 전달되면 해당 변수의 값만 표시됩니다. 인수가 지정되지 않은 경우 인쇄 env는 모든 환경 변수 목록을 한 줄에 하나씩 인쇄합니다.

예를 들어 실행할 HOME 환경 변수의 값을 표시하려면 다음을 수행합니다.

출력은 현재 로그인한 사용자의 경로를 인쇄합니다.

printenv HOME

# /home/jjeongil

 

 

 

다음 두 개 이상의 인수를 printenv 명령에 전달할 수도 있습니다.

printenv LANG PWD
Copy
en_US
/home/jjeongil

 

 

 

인수 없이 printenv 또는 env 명령을 실행하면 모든 환경 변수 목록이 표시됩니다.

printenv

# LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35;...
# LESSCLOSE=/usr/bin/lesspipe %s %s
# LANG=en_US
# S_COLORS=auto
# XDG_SESSION_ID=5
# USER=jjeongil
# PWD=/home/jjeongil
# HOME=/home/jjeongil
# SSH_CLIENT=192.168.121.1 34422 22
# XDG_DATA_DIRS=/usr/local/share:/usr/share:/var/lib/snapd/desktop
# SSH_TTY=/dev/pts/0
# MAIL=/var/mail/jjeongil
# TERM=xterm-256color
# SHELL=/bin/bash
# SHLVL=1
# LANGUAGE=en_US:
# LOGNAME=linuxize
# XDG_RUNTIME_DIR=/run/user/1000
# PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
# LESSOPEN=| /usr/bin/lesspipe %s
# _=/usr/bin/printenv

 

 

다음은 가장 일반적인 몇 가지 환경 변수입니다.

USER - 현재 로그인한 사용자입니다.

HOME - 현재 사용자의 홈 디렉토리입니다.

EDITER - 사용할 기본 파일 편집기입니다. 터미널에 edit를 입력할 때 사용할 편집기입니다.

SHELL - 현재 사용자의 셸 경로(예: bash 또는 zsh)입니다.

LOGNAME - 현재 사용자의 이름입니다.

PATH - 명령을 실행할 때 검색할 디렉토리 목록입니다. 명령을 실행하면 시스템이 이 순서대로 해당 디렉터리를 검색하고 발견된 첫 번째 실행 파일을 사용합니다.

LANG - 현재 로컬 설정입니다.

TERM - 현재 터미널 에뮬레이션입니다.

MAIL - 현재 사용자의 메일이 저장되는 위치입니다.

 

printenv 및 env 명령은 환경 변수만 인쇄합니다. 환경, 셸 및 변수, 셸 함수 등 모든 변수의 목록을 가져오려면 set 명령을 사용할 수 있습니다.

 

 

set

# BASH=/bin/bash
# BASHOPTS=checkwinsize:cmdhist:complete_fullquote:expand_aliases:extglob:extquote:force_fignore:histappend:interactive_comments:login_shell:progcomp:promptvars:sourcepath
# BASH_ALIASES=()
# BASH_ARGC=()
# BASH_ARGV=()

 

 

명령어는 모든 변수의 큰 목록을 표시하므로 출력을 less 명령으로 연결하려고 할 수 있습니다.

set | less

 

 

에코 명령을 사용하여 셸 변수를 출력할 수도 있습니다.

예를 들어 BASH_VERSION 변수의 값을 인쇄하려면 다음을 실행합니다.

echo $BASH_VERSION

# 4.4.19(1)-release

 

 

 

환경 변수 설정

셸 변수와 환경 변수의 차이를 더 잘 설명하기 위해 셸 변수 설정부터 시작한 다음 환경 변수로 넘어갑니다.

MY_VAR 이름과 jjeongil 값을 사용하여 새 셸 변수를 생성하려면 다음을 입력하십시오.

MY_VAR='jjeongil'

 

 

grep set | grep MY_VAR로 set 명령의 출력을 필터링하는 eco $MY_VAR를 사용하여 변수를 설정할 수 있습니다.

$MY_VAR를 반향합니다.

echo $MY_VAR

# Linuxize

 

 

printenv 명령을 사용하여 이 변수가 환경 변수인지 여부를 확인합니다.

printenv MY_VAR

 

 

변수가 환경 변수가 아니라는 것을 알려주는 출력이 비어 있습니다.

또한 변수를 새 셸로 인쇄하려고 하면 빈 출력이 표시됩니다.

bash -c 'echo $MY_VAR'

 

 

내보내기 명령은 환경 변수를 설정하는 데 사용됩니다.

환경 변수를 생성하려면 셸 변수를 환경 변수로 내보내면 됩니다.

export MY_VAR

 

 

다음을 실행하여 이를 확인할 수 있습니다.

bash -c 'echo $MY_VAR'

# jjeongil

 

 

이번에 변수를 새 셸로 인쇄하려고 하면 터미널에 변수 이름이 출력합니다.

환경 변수를 한 줄로 설정할 수도 있습니다.

export MY_NEW_VAR="My New Var"

 

 

이러한 방법으로 생성된 환경 변수는 현재 세션에서만 사용할 수 있습니다. 새 셸을 열거나 로그아웃하면 모든 변수가 손실됩니다.

 

 

 

영구 환경 변수

환경 변수를 영구적으로 만들려면 bash 구성 파일에서 이러한 변수를 정의해야 합니다. 대부분의 Linux 배포에서는 새 세션을 시작할 때 다음 파일에서 환경 변수를 읽습니다. 

/etc/환경 - 시스템 전체 환경 변수를 설정할 수 있습니다. 이 파일의 변수는 다음 형식으로 설정됩니다.

FOO=bar
VAR_TEST="Test Var"

 

 

/etc/profile - 이 파일에 설정된 변수는 bash 로그인 셸을 입력할 때마다 로드됩니다. 이 파일에서 환경 변수를 선언할 때는 내보내기 명령을 사용해야 합니다.

export JAVA_HOME="/path/to/java/home"
export PATH=$PATH:$JAVA_HOME/bin

 

 

사용자별 셸별 구성 파일입니다. 예를 들어, Bash를 사용하는 경우 ~/.bashrc에서 변수를 선언할 수 있습니다.

export PATH="$HOME/bin:$PATH"

 

 

새 환경 변수를 현재 셸 세션에 로드하려면 source 명령을 사용합니다.

source ~/.bashrc

 

반응형