Linux에서 변수를 영구적으로 내보내는 방법?


156

RHEL6을 실행 중이며 다음과 같은 환경 변수를 내보냈습니다.

export DISPLAY=:0

터미널이 닫히면 해당 변수가 손실됩니다. 이 변수 값이 항상 특정 사용자에게 존재하도록이를 영구적으로 추가하려면 어떻게해야합니까?

답변:


172

당신은 예를 들어, 쉘 설정 파일에 추가 할 수 있습니다 $HOME/.bashrc이상 세계에서 /etc/environment. 이러한 라인을 추가 한 후에는 GUI 기반 시스템에서 변경 사항이 즉시 반영되지 않습니다. 터미널을 종료하거나 새 터미널을 생성하고 서버에서 세션을 로그 아웃하고 로그인하여 변경 사항을 반영해야합니다.


3
감사합니다. 다시 시작하지 않고 변경 사항을 적용하려면 어떻게해야합니까? (저는 Linux 초보자입니다)
Bitterblue

6
@ mini-me-~ / bashrc는 쉘을 열 때마다 뽑 힙니다. 명시 적으로로드하려면, 사용 source예를 - > source ~/.bashrc.
kostja

@kostja 모든 새로운 포탄을 위해? 해당 env 변수를 변경하기 전에 이클립스가 실행 중이고 이클립스가 vars를 변경하기를 원한다면 이클립스를 다시 시작해야합니까?
Bitterblue

1
@ mini-me : 프로세스 환경은 일반적으로 호출자가 설정하고 프로세스 내에서 변경됩니다. 실행중인 프로세스가 독특하고와 행할 수없는 외부에서 ENV 변경 export하지만, 디버거 시도
앙투안

1
@ Mr.Hyde : 일반적으로 중요하지 않습니다. 파일은 위에서 아래로 구문 분석되므로 var 정의가 다른 정의에 종속되는 경우 그에 따라 정렬해야합니다. 예, 파일의 끝은 괜찮습니다.
Antoine

120

다음과 같이 영구 환경 변수를 설정하려면 세 개의 파일을 편집해야합니다.

  • ~ / .bashrc

    터미널 창을 열면이 파일이 실행됩니다. 따라서 모든 터미널 창에서 영구 환경 변수를 사용하려면이 파일 끝에 다음 줄을 추가해야합니다.
    export DISPLAY = 0

  • ~ / .profile

  • bashrc 와 마찬가지로 OS의 모든 로그인에서 환경 변수를 가지려면이 파일의 끝에 언급 된 명령 줄을 넣어야합니다.

  • / etc / 환경

  • 터미널 창뿐만 아니라 모든 창이나 응용 프로그램에서 환경 변수를 원하면이 파일을 편집해야합니다. 이 파일의 끝에 다음 명령을 추가하십시오.
    DISPLAY = 0
    이 파일에서는 내보내기 명령 을 작성할 필요가 없습니다.

일반적으로이 변경 사항을 적용하려면 컴퓨터를 다시 시작해야합니다. 그러나 다음 명령으로 bashrc프로파일 에 변경 사항을 적용 할 수 있습니다 .

$ source ~/.bashrc
$ source ~/.profile

그러나 / etc / environment의 경우 경우 다시 시작할 수밖에 없습니다 (내가 아는 한)

  • 간단한 해결책

  • 이 절차가 모든 작업을 수행 할 수 있도록 간단한 스크립트를 작성했습니다. 환경 변수의 이름과 값만 설정하면됩니다.

    #!/bin/bash
    echo "Enter variable name: "
    read variable_name
    echo "Enter variable value: "
    read variable_value
    echo "adding " $variable_name " to environment variables: " $variable_value
    echo "export "$variable_name"="$variable_value>>~/.bashrc
    echo $variable_name"="$variable_value>>~/.profile
    echo $variable_name"="$variable_value>>/etc/environment
    source ~/.bashrc
    source ~/.profile
    echo "do you want to restart your computer to apply changes in /etc/environment file? yes(y)no(n)"
    read restart
    case $restart in
        y) sudo shutdown -r 0;;
        n) echo "don't forget to restart your computer manually";;
    esac
    exit
    

    이 줄을 shfile에 저장 한 다음 실행 가능하게 만들고 실행하십시오!


    1
    스크립트는 매우 잘 작동했습니다. 우분투 14.04가 설치되어 있습니다. 난 그냥 빈 파일에 위의 내용을 붙여 그 이름 insert_var.sh 다음, chmod -x insert_var.sh다음, bash insert_var.sh. 감사.
    Brunno Vodola Martins

    우분투에서 터미널 창을 열고 export MY_VAR = 1을 입력했습니다. 이 변수 MY_VAR은 어디에 저장됩니까?
    vgokul129

    29

    .bashrc또는에 줄을 추가하십시오 .profile. 설정 한 변수 $HOME/.profile는 현재 사용자 에 대해 활성화 되어 있고 변수 /etc/profile는 전역입니다. 는 .bashrc각각의 bash 세션 시작에 당겨진다.


    27

    우분투 시스템에서 다음 위치를 사용하십시오.

    1. JAVA_PATH=/usr/local/java상점 형식의 시스템 전체 지속 변수

      /etc/environment
      

    2. export PATH="$JAVA_PATH:$PATH"저장 과 같은 변수를 참조하는 시스템 전체 지속 변수

      /etc/.bashrc
      
    3. PATH DEFAULT=/usr/bin:usr/local/bin상점 형식의 사용자 고유 지속 변수

      ~/.pam_environment
      

    # 2에 대한 자세한 내용은 Ask Ubuntu answer를 확인하십시오 . 참고 : # 3은 우분투 권장 사항이지만 실제 환경에서는 보안 문제가있을 수 있습니다.


    2

    특정 예 : Java 7 및 Java 6이 설치되어 있으며 6으로 일부 빌드를 실행하고 7로 다른 빌드를 실행해야합니다. 따라서 JAVA_HOMEmaven이 각 빌드에 대해 원하는 것을 선택하도록 동적으로 변경해야합니다 . 나는 다음을 수행했다.

    • j6.sh단순히 내보내는 스크립트 생성JAVA_HOME=... j6 설치로 경로를 ...
    • 그런 다음 위의 주석 중 하나에서 제안한 것처럼 빌드에 J6이 필요할 때마다 j6.sh해당 명령 터미널에서 소스 를 실행합니다 . 기본적으로 my JAVA_HOME는 J7로 설정되어 있습니다.

    도움이 되었기를 바랍니다.


    당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
    Licensed under cc by-sa 3.0 with attribution required.