Linux에서 로컬, 사용자 및 시스템 전체 환경 변수를 설정 및 설정 해제하는 방법
환경 변수는 셸에 정의되어 실행 중 프로그램에 필요한 특수 변수입니다. 시스템 정의 또는 사용자 정의일 수 있습니다. 시스템 정의 변수는 시스템에 의해 설정되고 시스템 수준 프로그램에서 사용되는 변수입니다.
예를 들어 PWD 명령은 현재 작업 디렉터리를 저장하는 데 사용되는 매우 일반적인 시스템 변수입니다. 사용자 정의 변수는 일반적으로 현재 쉘에 대해 일시적으로 또는 영구적으로 사용자가 설정합니다. 환경 변수 설정 및 설정 해제의 전체 개념은 일부 파일 세트와 몇 가지 명령 및 다른 셸을 중심으로 이루어집니다.
더 넓은 의미에서 환경 변수는 세 가지 유형이 될 수 있습니다.
1. 로컬 환경변수
현재 세션에 대해 정의된 것입니다. 이러한 환경 변수는 원격 로그인 세션이든 로컬 터미널 세션이든 현재 세션까지만 지속됩니다. 이러한 변수는 구성 파일에 지정되지 않으며 특수 명령 세트를 사용하여 생성 및 제거됩니다.
2. 사용자 환경 변수
이는 특정 사용자에 대해 정의된 변수로, 사용자가 로컬 터미널 세션을 사용하여 로그인하거나 해당 사용자가 원격 로그인 세션을 사용하여 로그인할 때마다 로드됩니다. 이러한 변수는 일반적으로 .bashrc
, .bash_profile
, .bash_login
, .profile
구성 파일에서 설정되고 로드됩니다. 사용자의 홈 디렉토리에 있는 파일입니다.
3. 시스템 전반의 환경 변수
이는 시스템 전체, 즉 해당 시스템에 있는 모든 사용자가 사용할 수 있는 환경 변수입니다. 이러한 변수는 /etc/environment
, /etc/profile
, /etc/profile.d 디렉터리 및 파일에 있는 시스템 전체 구성 파일에 있습니다. /
, /etc/bash.bashrc
. 이러한 변수는 시스템 전원이 켜지고 사용자가 로컬 또는 원격으로 로그인할 때마다 로드됩니다.
사용자 전체 및 시스템 전체 구성 파일 이해
여기서는 시스템 전체 또는 사용자별 환경 변수를 보유하는 위에 나열된 다양한 구성 파일을 간략하게 설명합니다.
.bashrc
이 파일은 사용자가 새 로컬 세션을 만들 때마다, 즉 간단히 말해서 새 터미널을 열 때마다 로드되는 사용자별 파일입니다. 이 파일에서 생성된 모든 환경 변수는 새 로컬 세션이 시작될 때마다 적용됩니다.
.bash_profile
이 파일은 사용자별 원격 로그인 파일입니다. 이 파일에 나열된 환경 변수는 사용자가 원격으로 로그인할 때마다, 즉 SSH 세션을 사용하여 호출됩니다. 이 파일이 없으면 시스템은 .bash_login
또는 .profile
파일을 찾습니다.
/etc/환경
이 파일은 환경 변수를 생성, 편집 또는 제거하기 위한 시스템 전체 파일입니다. 이 파일에 생성된 환경 변수는 시스템 전체에서 모든 사용자가 로컬 및 원격으로 액세스할 수 있습니다.
/etc/bash.bashrc
시스템 전체 bashrc
파일. 이 파일은 모든 사용자가 로컬 터미널 세션을 열 때마다 한 번씩 로드됩니다. 이 파일에서 생성된 환경 변수는 모든 사용자가 액세스할 수 있지만 로컬 터미널 세션을 통해서만 가능합니다. 해당 시스템의 사용자가 원격 로그인 세션을 통해 원격으로 액세스되면 이러한 변수는 표시되지 않습니다.
/etc/프로필
시스템 전체 프로필 파일. 이 파일에서 생성된 모든 변수는 시스템의 모든 사용자가 액세스할 수 있지만 해당 사용자의 세션이 원격으로 호출되는 경우, 즉 원격 로그인을 통해서만 액세스할 수 있습니다. 이 파일의 모든 변수는 로컬 로그인 세션, 즉 사용자가 로컬 시스템에서 새 터미널을 열 때 액세스할 수 없습니다.
참고: 시스템 전체 또는 사용자 전체 구성 파일을 사용하여 생성된 환경 변수는 제거를 통해 제거될 수 있습니다. 이 파일에서만. 이러한 파일을 변경할 때마다 로그아웃했다가 다시 로그인하거나 터미널에 다음 명령을 입력하여 변경 사항을 적용하세요.
source <file-name>
Linux에서 로컬 또는 세션 전체 환경 변수 설정 또는 설정 해제
로컬 환경 변수는 다음 명령을 사용하여 생성할 수 있습니다.
var=value
OR
export var=value
이러한 변수는 세션 전체에 적용되며 현재 터미널 세션에만 유효합니다. 이러한 세션 전체 환경 변수를 지우려면 다음 명령을 사용할 수 있습니다.
1. 환경 사용
기본적으로 "env"
명령은 현재 환경 변수를 모두 나열합니다. 그러나 '-i'
스위치와 함께 사용하면 일시적으로 모든 환경 변수가 지워지고 사용자가 모든 환경 변수 없이 현재 세션에서 명령을 실행할 수 있습니다.
env –i [Var=Value]… command args…
여기서 var=value
는 이 명령에만 사용하려는 로컬 환경 변수에 해당합니다.
env –i bash
일시적으로 환경 변수가 없는 bash 쉘을 제공합니다. 그러나 쉘을 종료하면 모든 변수가 복원됩니다.
2. 설정되지 않은 사용
로컬 환경 변수를 지우는 또 다른 방법은 unset 명령을 사용하는 것입니다. 로컬 환경 변수를 일시적으로 설정 해제하려면
unset <var-name>
여기서 var-name
은 설정을 해제하거나 지우려는 로컬 변수의 이름입니다.
3. 변수 이름을 ”으로 설정합니다.
또 다른 덜 일반적인 방법은 지우려는 변수의 이름을 ''
(비어 있음)로 설정하는 것입니다. 이렇게 하면 활성화된 현재 세션의 로컬 변수 값이 지워집니다.
참고 – 시스템 또는 사용자 환경 변수의 값을 가지고 놀고 변경할 수도 있지만 변경 사항은 현재 터미널 세션에만 반영되며 영구적이지 않습니다.
Linux에서 사용자 전체 및 시스템 전체 환경 변수를 생성하는 방법 알아보기
섹션에서는 아래 예를 통해 Linux에서 로컬, 사용자 및 시스템 전체 환경 변수를 설정하거나 설정 해제하는 방법을 알아봅니다.
1. Linux에서 로컬 변수 설정 및 설정 해제
a.) 여기서는 로컬 변수 VAR1
를 생성하고 이를 임의의 값으로 설정합니다. 그런 다음 unset을 사용하여 해당 지역 변수를 제거하고 마지막에 해당 변수가 제거됩니다.
VAR1='TecMint is best Site for Linux Articles'
echo $VAR1
unset VAR1
echo $VAR1
b.) 지역 변수를 생성하는 또 다른 방법은 export
명령을 사용하는 것입니다. 생성된 로컬 변수는 현재 세션에서 사용할 수 있습니다. 변수 설정을 해제하려면 변수 값을 ''
로 설정하면 됩니다.
export VAR='TecMint is best Site for Linux Articles'
echo $VAR
VAR=
echo $VAR
c.) 여기서는 로컬 변수 VAR2
를 생성하고 이를 값으로 설정했습니다. 그런 다음 모든 로컬 및 기타 환경 변수를 임시로 지우는 명령을 실행하기 위해 'env –i'
명령을 실행했습니다. 여기서 이 명령은 다른 모든 환경 변수를 지워 bash 쉘을 실행했습니다. 호출된 bash 셸에 'exit'
를 입력하면 모든 변수가 복원됩니다.
VAR2='TecMint is best Site for Linux Articles'
echo $VAR2
env -i bash
echo $VAR2
2. Linux에서 사용자 전체 환경 변수 설정 및 설정 해제
a.) 추가해야 할 환경 변수를 내보내거나 설정하려면 홈 디렉터리의 .bashrc
파일을 수정하세요. 그런 다음 파일을 소스하여 변경 사항을 적용합니다. 그러면 변수(제 경우에는 'CD'
)가 적용되는 것을 볼 수 있습니다. 이 변수는 해당 사용자에 대해 새 터미널을 열 때마다 사용할 수 있지만 원격 로그인 세션에서는 사용할 수 없습니다.
vi .bashrc
.bashrc
파일 하단에 다음 줄을 추가합니다.
export CD='This is TecMint Home'
이제 다음 명령을 실행하여 새로운 변경 사항을 적용하고 테스트하세요.
source .bashrc
echo $CD
이 변수를 제거하려면 .bashrc 파일에서 다음 줄을 제거하고 리소스를 다시 지정하세요.
b.) 원격 로그인 세션(예: 원격 시스템에서 사용자에게 SSH를 통해 연결하는 경우)에 사용할 수 있는 변수를 추가하려면 .bash_profile
파일을 수정하세요.
vi .bash_profile
.bash_profile
파일 하단에 다음 줄을 추가합니다.
export VAR2='This is TecMint Home'
이 파일을 소싱할 때 이 사용자에게 ssh를 실행하면 변수를 사용할 수 있지만 새 로컬 터미널을 열 때는 사용할 수 없습니다.
source .bash_profile
echo $VAR2
여기서 VAR2
는 처음에는 사용할 수 없지만 localhost에서 사용자에게 ssh를 수행하면 변수를 사용할 수 있게 됩니다.
ssh tecmint@localhost
echo $VAR2
이 변수를 제거하려면 추가한 .bash_profile
파일에서 줄을 제거하고 파일의 리소스를 다시 지정하세요.
참고: 이 변수는 현재 사용자로 로그인할 때마다 사용할 수 있지만 다른 사용자에게는 사용할 수 없습니다.
3. Linux에서 시스템 전체 환경 변수 설정 및 설정 해제
a.) 시스템 전체에 로그인하지 않는 변수(즉, 새 터미널을 열 때 모든 사용자가 사용할 수 있지만 컴퓨터의 사용자가 원격으로 액세스할 때는 사용할 수 없는 변수)를 추가하려면 < 코드>/etc/bash.bashrc 파일.
export VAR='This is system-wide variable'
그런 다음 파일을 소스로 가져옵니다.
source /etc/bash.bashrc
이제 모든 사용자가 새 터미널을 열 때 이 변수를 사용할 수 있습니다.
echo $VAR
sudo su
echo $VAR
su -
echo $VAR
여기서는 일반 사용자뿐만 아니라 루트 사용자도 동일한 변수를 사용할 수 있습니다. 다른 사용자로 로그인하여 이를 확인할 수 있습니다.
b.) 컴퓨터의 사용자가 원격으로 로그인했지만 로컬 컴퓨터에서 새 터미널을 열지 않을 때 환경 변수를 사용할 수 있도록 하려면 파일을 편집해야 합니다. – '/etc/profile'
.
export VAR1='This is system-wide variable for only remote sessions'
변수를 추가한 후 파일을 다시 소스화하면 됩니다. 그러면 변수를 사용할 수 있습니다.
source /etc/profile
echo $VAR1
이 변수를 제거하려면 /etc/profile
파일에서 해당 행을 제거하고 리소스를 확보하세요.
c.) 그러나 원격 로그인 세션과 로컬 세션(예: 새 터미널 창 열기) 모두에서 시스템 전체에 걸쳐 사용할 수 있는 환경을 추가하려는 경우 사용자라면 /etc/environment 파일에 변수를 내보내면 됩니다.
export VAR12='I am available everywhere'
그런 다음 파일을 소스로 지정하면 변경 사항이 적용됩니다.
source /etc/environment
echo $VAR12
sudo su
echo $VAR12
exit
ssh localhost
echo $VAR12
여기에서 볼 수 있듯이 일반 사용자, 루트 사용자는 물론 원격 로그인 세션(여기서는 localhost)에서도 환경 변수를 사용할 수 있습니다.
이 변수를 지우려면 /etc/environment 파일에서 항목을 제거하고 리소스를 확보하거나 다시 로그인하면 됩니다.
참고: 변경사항은 파일을 소스로 가져오면 적용됩니다. 하지만 그렇지 않은 경우 로그아웃했다가 다시 로그인해야 할 수도 있습니다.
결론
따라서 환경 변수를 수정할 수 있는 몇 가지 방법이 있습니다. 동일한 내용에 대한 새롭고 흥미로운 트릭을 찾으면 댓글에 언급해 주세요.