환경 변수를 영구적으로 설정하는 방법


227

내 변수는

LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib
ORACLE_HOME=/usr/lib/oracle/11.2/client64

이러한 변수를 영구적으로 저장하는 방법은 무엇입니까?


2
이 페이지의 다른 답변은 훌륭합니다. 하나의 작은 권장 사항은 경로 /usr/lib/oracle/11.2/client64/lib아래에 새 파일 을 추가 하는 것 /etc/ld.so.conf.d/입니다. 그런 다음 LD_LIBRARY_PATH를 설정할 필요가 없습니다 . 여기도 참조 하십시오 .
Elliott Frisch

1
조심스럽게,이 이야기에는 처음 등장한 것보다 더 많은 것이 있습니다. 나는 당신이 내 대답을 확인하도록 초대합니다.
jasonleonhard

답변:


252

파일 .profile또는 로그인 쉘 프로파일 파일 (홈 디렉토리에 있음)에 파일 을 추가 할 수 있습니다 .

환경 변수를 "영구적으로"변경하려면 최소한 다음 상황을 고려해야합니다.

  1. 로그인 / 비 로그인 셸
  2. 대화식 / 비 대화식 셸

세게 때리다

  1. 로그인 쉘과 같은 배쉬로드 /etc/profile, ~/.bash_profile, ~/.bash_login, ~/.profile순서대로
  2. 비 로그인 대화식 쉘로 Bash가로드됩니다 ~/.bashrc
  3. 비 로그인 비 대화식 쉘로 Bash는 환경 변수에 지정된 구성을로드합니다. $BASH_ENV
$EDITOR ~/.profile
#add lines at the bottom of the file:  
     export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib
     export ORACLE_HOME=/usr/lib/oracle/11.2/client64

zsh

$EDITOR ~/.zprofile
#add lines at the bottom of the file:  
     export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib
     export ORACLE_HOME=/usr/lib/oracle/11.2/client64

ksh

$EDITOR ~/.profile
#add lines at the bottom of the file:  
     export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib
     export ORACLE_HOME=/usr/lib/oracle/11.2/client64

시내

$EDITOR ~/.profile
#add lines at the bottom of the file:  
     LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib     
     ORACLE_HOME=/usr/lib/oracle/11.2/client64
     export LD_LIBRARY_PATH ORACLE_HOME

csh 또는 tcsh

$EDITOR ~/.login
#add lines at the bottom of the file:  
     setenv LD_LIBRARY_PATH /usr/lib/oracle/11.2/client64/lib
     setenv ORACLE_HOME /usr/lib/oracle/11.2/client64

모든 사용자에 대해 영구적으로 만들려면 /etc/, 예 /etc/profile를 들어 Bourne과 같은 쉘, /etc/csh.login(t) csh /etc/zsh/zprofile/etc/zsh/zshrczsh에 해당하는 파일을 편집 할 수 있습니다 .

다른 옵션은 /etc/environmentLinux 시스템에서 PAM 모듈이 읽고 pam_env쉘 스타일 확장이 아닌 간단한 할당 만 지원 하는 을 사용 하는 것입니다 . ( 이것에 대한 데비안 가이드 를 참조하십시오 .)

이러한 파일에는 이미 일부 지정이 포함되어있을 수 있으므로 파일에 이미있는 구문을 따르십시오.

변경 사항을 적용하려면 셸을 다시 시작하고 사용자를 다시 로그인하십시오.

시스템 전체 환경 변수를 추가해야하는 경우 변수 /etc/profile.d를 초기화하기위한 sh 스크립트가 포함 된 폴더가 있습니다.
내보내는 모든 변수와 함께 sh 스크립트를 여기에 배치 할 수 있습니다.
데비안에서 env에 변수를 추가하는 표준 방법으로 사용해서는 안되지만 조심하십시오.


.profile의는 /etc/하지만이의 변수를 설정하는 방법을하지 않는 .profile저에게 알려주세요
user3021349

6
.profile귀하의 홈 디렉토리에 없습니다/etc/
Kiwy

1
[Admin@localhost etc]$ cat ~/.profile cat: /home/Admin/.profile: No such file or directory [Admin@localhost etc]$
user3021349

4
@ user3021349 무례하지는 않지만 1 초라고 생각하면 마스터하는 다른 편집기를 사용할 수도 있습니다. :wqvi에서 파일을 쓰고 종료하는 명령은 esc전에 입력하는 것을 잊지 마십시오
Kiwy

3
crontab스크립트 에서 환경 변수를 고려해야합니다 . crontab스크립트가 실행 중일 때는 이러한 위치를 찾지 않습니다.
yegle

71

배포판에 따라 모든 사용자 / 쉘에 대해 수행하려면 /etc/environment또는을 사용할 수 있습니다 /etc/profile. /etc/profile.d패키징 시스템의 업데이트와 충돌 할 가능성이 적으므로 새 파일을 만드는 것이 좋습니다 (있는 경우).

년은 /etc/environment, 변수는 일반적으로 설정되어 name=value, 예를 들면 :

ORACLE_HOME=/usr/lib/oracle/11.2/client64

에서 다음 /etc/profileexport같은 스크립트이므로 사용해야합니다 .

export ORACLE_HOME=/usr/lib/oracle/11.2/client64

아래의 파일도 동일하게 /etc/profile.d적용되며 파일이 작동하려면 이름 지정 제한 사항이 충족되어야합니다. 데비안에서, 파일은 확장자를 가져야합니다 .sh(소스 파일이므로 뱅 라인 또는 실행 권한이 필요하지는 않지만). 배포 문서를 확인하거나 /etc/profile스크립트를보고 이러한 파일이 어떻게로드되는지 확인하십시오.

또한 보안 위험을 포함하여 LD_LIBRARY_PATH영구적으로 설정하면 문제가 발생할 수 있습니다. 대안으로, 나는 LD_LIBRARY_PATH실행하기 전에 명령 줄이 시작될 필요가있는 각 프로그램의 시작 부분 을 앞에 추가하는 방법을 찾는 것이 좋습니다 . 예 :

LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib myprog

이를 수행하는 한 가지 방법은 랩퍼 스크립트를 사용하여 프로그램을 실행하는 것입니다. 당신은 당신의 프로그램으로이 같은 이름을주고에 넣을 수 /usr/local/bin나타나 어느 곳이나 이전 에 프로그램의 위치 PATH. 다음은 예제 스크립트입니다 (스크립트를 잊지 마십시오 chmod +x).

#!/bin/sh
LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib /real/location/of/myprog "$@"

따라서 environment파일 에 값 쌍을 추가 하면 무엇이로드됩니까? 예를 들어, vi 편집기를 (변경 성공적으로 기록) 종료 후, 나는 쓰기를 기대하고있어 echo $MY_NEW_VARIABLE편집 - 그것은 인쇄 참조 : 나는 새 명령 쉘을 시작하면 그들이 거기 참조
bkwdesign

이것이 개인적인 문제인지 또는 무엇인지 확실하지 않지만 /etc/environmentbash 터미널을 다시 시작하거나 입력 한 경우에도 이것을 설정 한 후 OS를 재부팅해야했습니다 source /etc/environment. 따라서 환경 변수가 지속되지 않는 문제가있는 경우 재부팅을 시도하십시오.
Blairg23

@bkwdesign @ Blairg23 /etc/environment은 스크립트가 아니므로 소스를 지정할 수 없습니다. PAM에 의해 로그인시 (및 소수의 다른 시스템 이벤트)로드되므로, $ su <your username here>격리 된 세션에서 새 값을 가져 오기 위해 로그 아웃 / 로그인하거나 터미널에서 새 로그인 세션을 실행할 수 있습니다 . 종료하면 값이 사라 지므로 로그 아웃 / 로그인 만하면 오류가 덜 발생합니다.
AaronDanielson

2

oracle을 설치할 때 oracle은 확인을 클릭하기 전에 일부 스크립트를 실행하도록 요청했습니다. 이 스크립트는 .bash_profileoracle 사용자 홈 디렉토리에 더미 설정을 넣습니다 . 파일을 보려면 ls -al모든 숨겨진 파일을 표시합니다.

nano bash_profile파일을 열려면 입력 하십시오. 호스트 이름과 적절한 sid 이름을 반영하도록 파일을 변경하십시오. 수정이 필요한 다른 설정을 확인하십시오. 저장하려면 제어 x를 누르고 저장 여부를 물으면 y를 입력하십시오. 리턴 키를 눌러 저장하십시오. 컴퓨터를 다시 시작하십시오. Oracle 사용자로 로깅 입력하여 데이터베이스를 시작하십시오

sqlplus / as sysdba

startup  

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