웹사이트 검색

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 파일에서 항목을 제거하고 리소스를 확보하거나 다시 로그인하면 됩니다.

참고: 변경사항은 파일을 소스로 가져오면 적용됩니다. 하지만 그렇지 않은 경우 로그아웃했다가 다시 로그인해야 할 수도 있습니다.

결론

따라서 환경 변수를 수정할 수 있는 몇 가지 방법이 있습니다. 동일한 내용에 대한 새롭고 흥미로운 트릭을 찾으면 댓글에 언급해 주세요.