내 변수는
LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib
ORACLE_HOME=/usr/lib/oracle/11.2/client64
이러한 변수를 영구적으로 저장하는 방법은 무엇입니까?
내 변수는
LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib
ORACLE_HOME=/usr/lib/oracle/11.2/client64
이러한 변수를 영구적으로 저장하는 방법은 무엇입니까?
답변:
파일 .profile
또는 로그인 쉘 프로파일 파일 (홈 디렉토리에 있음)에 파일 을 추가 할 수 있습니다 .
환경 변수를 "영구적으로"변경하려면 최소한 다음 상황을 고려해야합니다.
/etc/profile
, ~/.bash_profile
, ~/.bash_login
, ~/.profile
순서대로~/.bashrc
$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
$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
$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
$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/zshrc
zsh에 해당하는 파일을 편집 할 수 있습니다 .
다른 옵션은 /etc/environment
Linux 시스템에서 PAM 모듈이 읽고 pam_env
쉘 스타일 확장이 아닌 간단한 할당 만 지원 하는 을 사용 하는 것입니다 . ( 이것에 대한 데비안 가이드 를 참조하십시오 .)
이러한 파일에는 이미 일부 지정이 포함되어있을 수 있으므로 파일에 이미있는 구문을 따르십시오.
변경 사항을 적용하려면 셸을 다시 시작하고 사용자를 다시 로그인하십시오.
시스템 전체 환경 변수를 추가해야하는 경우 변수 /etc/profile.d
를 초기화하기위한 sh 스크립트가 포함 된 폴더가 있습니다.
내보내는 모든 변수와 함께 sh 스크립트를 여기에 배치 할 수 있습니다.
데비안에서 env에 변수를 추가하는 표준 방법으로 사용해서는 안되지만 조심하십시오.
.profile
의는 /etc/
하지만이의 변수를 설정하는 방법을하지 않는 .profile
저에게 알려주세요
.profile
귀하의 홈 디렉토리에 없습니다/etc/
[Admin@localhost etc]$ cat ~/.profile cat: /home/Admin/.profile: No such file or directory [Admin@localhost etc]$
:wq
vi에서 파일을 쓰고 종료하는 명령은 esc
전에 입력하는 것을 잊지 마십시오
crontab
스크립트 에서 환경 변수를 고려해야합니다 . crontab
스크립트가 실행 중일 때는 이러한 위치를 찾지 않습니다.
배포판에 따라 모든 사용자 / 쉘에 대해 수행하려면 /etc/environment
또는을 사용할 수 있습니다 /etc/profile
. /etc/profile.d
패키징 시스템의 업데이트와 충돌 할 가능성이 적으므로 새 파일을 만드는 것이 좋습니다 (있는 경우).
년은 /etc/environment
, 변수는 일반적으로 설정되어 name=value
, 예를 들면 :
ORACLE_HOME=/usr/lib/oracle/11.2/client64
에서 다음 /etc/profile
과 export
같은 스크립트이므로 사용해야합니다 .
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
편집 - 그것은 인쇄 참조 : 나는 새 명령 쉘을 시작하면 그들이 거기 참조
/etc/environment
bash 터미널을 다시 시작하거나 입력 한 경우에도 이것을 설정 한 후 OS를 재부팅해야했습니다 source /etc/environment
. 따라서 환경 변수가 지속되지 않는 문제가있는 경우 재부팅을 시도하십시오.
/etc/environment
은 스크립트가 아니므로 소스를 지정할 수 없습니다. PAM에 의해 로그인시 (및 소수의 다른 시스템 이벤트)로드되므로, $ su <your username here>
격리 된 세션에서 새 값을 가져 오기 위해 로그 아웃 / 로그인하거나 터미널에서 새 로그인 세션을 실행할 수 있습니다 . 종료하면 값이 사라 지므로 로그 아웃 / 로그인 만하면 오류가 덜 발생합니다.
oracle을 설치할 때 oracle은 확인을 클릭하기 전에 일부 스크립트를 실행하도록 요청했습니다. 이 스크립트는 .bash_profile
oracle 사용자 홈 디렉토리에 더미 설정을 넣습니다 . 파일을 보려면 ls -al
모든 숨겨진 파일을 표시합니다.
nano bash_profile
파일을 열려면 입력 하십시오. 호스트 이름과 적절한 sid 이름을 반영하도록 파일을 변경하십시오. 수정이 필요한 다른 설정을 확인하십시오. 저장하려면 제어 x를 누르고 저장 여부를 물으면 y를 입력하십시오. 리턴 키를 눌러 저장하십시오. 컴퓨터를 다시 시작하십시오. Oracle 사용자로 로깅 입력하여 데이터베이스를 시작하십시오
sqlplus / as sysdba
startup
/usr/lib/oracle/11.2/client64/lib
아래에 새 파일 을 추가 하는 것/etc/ld.so.conf.d/
입니다. 그런 다음 LD_LIBRARY_PATH를 설정할 필요가 없습니다 . 여기도 참조 하십시오 .