it-swarm-ko.tech

사용자 환경 변수는 어떻게 설정합니까? (영구적으로는 세션이 아님)

이것은 나를 짜증나게한다. 나는 여러 가지 제안 (모두 다른 파일과 구문을 사용)을 보았지만 그중 아무것도 작동하지 않았습니다.

특정 사용자에 대한 환경 변수를 어떻게 설정합니까? 나는 데비안 압박에 있습니다. ABC = "123"으로 만들기 위해 파일에 입력해야하는 정확한 구문은 무엇입니까?

148
user4069

셸의 초기화 파일에 선언을 넣어야합니다.

  • Bash, ash, ksh 또는 다른 Bourne 스타일 셸을 사용하는 경우

    ABC="123"; export ABC
    

    .profile 파일 (${HOME}/.profile)에 이것은 대부분의 유닉스 설치, 특히 데비안에서 기본 상황입니다.

    로그인 쉘이 bash 인 경우 .bash_profile (${HOME}/.bash_profile) 또는 .bash_login를 대신 사용할 수 있습니다.

    참고 :이 파일 중 하나가 존재하고 로그인 셸이 bash 인 경우 ssh 또는 텍스트 콘솔을 통해 로그인 할 때 .profile를 읽을 수 없지만 대신 읽을 수 있습니다. GUI에서 로그인하면 .bash_profile 또한 .bash_profile가 없으면 .bashrc를 사용하십시오.

  • Zsh를 로그인 쉘로 설정 한 경우 ~/.zprofile 대신 ~/.profile를 사용하십시오.

  • Tcsh를 사용하는 경우 추가

    setenv ABC "123"
    

    .login 파일 (${HOME}/.login)

  • 다른 셸을 사용하는 경우 셸 설명서에서 환경 변수를 정의하는 방법과 셸 시작시 실행되는 파일을 확인하십시오.

118
Matteo

환경 변수를 설정하려면 /etc/environment 파일을 사용하십시오. 그런 다음 /etc/environment 파일 안에 다음 줄을 추가하십시오.

ABC="123"

이제 모든 사용자 세션에서 ABC 변수에 액세스 할 수 있습니다. 변수 출력을 테스트하려면 먼저 명령을 사용하여 환경 변수를 새로 고치십시오.

source /etc/environment

echo $ABC를 실행하십시오.

49
Hokam

이것은 거의 모든 셸에 사용할 수있는 일반적인 절차입니다. 어쨌든 사용자는 일반적으로 어떤 셸을 사용하여 로그인해야하는지 알아야합니다.

path="$(grep $USER /etc/passwd | cut -d ':' -f 7)"
Shell="$(basename -- "$path")"

그런 다음이 셸에서 일반적으로 읽을 점 파일을 찾아야합니다.

man $Shell

작동 할 수있는 지름길은 쉘 이름을 포함하는 도트 파일을 나열하는 것입니다.

ls ~/.*${Shell}*

로그인 중에 파일 중 하나가 실제로 읽히는 지 확인하려면 파일 이름을 각 파일에 인쇄하면됩니다. 예를 들면 다음과 같습니다.

echo .bashrc

로그인 할 때 어떤 파일을 읽고 있는지 확인해야하며 수정할 파일을 결정할 수 있습니다. echo "$0"의 값은 셸이 도트 파일을 처리하는 방법에 따라 달라지고 오해의 소지가 있으므로 $0 또는 이와 유사한 것을 사용해서는 안됩니다.

변수를 "영구적으로"선언 할 때는 세션까지만 확장됩니다. 세션없이 변수의 값에 액세스 할 수있는 방법이 없으므로 그 밖의 의미는 없습니다. "읽기 전용"을 의미하는 경우 (쉘에 따라 다름) Bash에서 다음을 사용할 수 있습니다.

declare -r VAR

이미 값이 있거나

declare -r VAR=value

동시에 할당합니다. 모든 쉘에이 기능이있는 것은 아닙니다.

대부분의 쉘에서 변수를 선언하려면 변수 이름 ([A-Za-z_][A-Za-z0-9_]*)과 등호 (및 공백 없음 를 사용해야합니다. 등호 주변), 값 (값이 단순한 [A-Za-z0-9_]+가 아닌 경우 인용하는 것이 좋습니다). 예를 들면 다음과 같습니다.

name="John Doe"
ip=127.0.0.1
HORRIBLE=1
9
l0b0

내보내기를 사용하십시오.

export ABC="123"

설정되어 있는지 확인하려면

env

그리고/또는

env | grep ABC

영구적으로 추가하려면 ~/.bashrc 파일.

export ABC="123"
5
whoami

정확한 명령은 다음과 같습니다.

echo 'export ABC = "123"' >> ~/.profile

나를 위해 일한 가장 좋은 방법은 BASH Shell에서 .bashrc 파일을 수정하는 것입니다.

예를 들어 이것을 사용하십시오 :

  1. .bashrc 파일을여십시오
  2. 이 줄을 추가하십시오 :

    export <VARIABLE> = "<ANY PATH/VALUE you want>"
    

    예 : export HOME = "/home/user/"

    ""를 사용하면 작동하지 않으며 bashrc 파일은 소싱 중에 오류를보고하므로 ' '를 사용해야합니다.

  3. 현재 세션에서 소스하십시오.

또한/etc/environment 파일을 수정하려고 시도했지만 새 환경 변수를 만들 수 없었으며 소스 변수를 만들 때 정의 된 변수를 찾을 수 없다는 오류가 표시되었습니다.

1
Ayushi Agarwal