blabla.so
" 찾을 수 없음" 상황을 피하기 위해 LD_CONFIG_PATH에 일부 경로를 추가하는 스크립트를 작성하려고 합니다 . 문제는 내 스크립트가 (내보내기를 통해) 자체 컨텍스트를 수정할 수 있지만 다른 쉘에는 영향을 미치지 않는다는 것입니다. 재부팅과 셸 간에 지속되도록 전역적으로 변수를 설정하고 싶습니다.
내 현재 스크립트는 다음과 같습니다.
LDPATH='/opt/mqm/lib64'
LD_LIBRARY_PATH="$LDPATH:$LD_LIBRARY_PATH"
ldconfig
나는 다음과 같이 달린다
sudo ./set_my_ld_path.sh
$LD_LIBRARY_PATH
아무것도 반환하지 않습니다( LD_LIBRARY_PATH
비어 있음).
나도 시도했다
LDPATH='/opt/mqm/lib64' env
LD_LIBRARY_PATH="$LDPATH:$LD_LIBRARY_PATH"
ldconfig
하지만 PATH/LANG/HOME/LC_TIME/...과 같은 모든 기존 변수만 작성합니다.
예를 들어, powershell에서 다음 스크립트를 실행하면 원하는 작업이 수행됩니다.
# setting an environment variable for current and descendant processes, same as bash `export`
$env:OPENCV_DIR = $OPENCV_DIR
# applying it machine-wide, persists between users/shells/reboots
[Environment]::SetEnvironmentVariable("OPENCV_DIR", $env:OPENCV_DIR, [EnvironmentVariableTarget]::Machine)
그게 어떻게 가능하지?
답변1
첫째, 할당문 주위에는 공백이 있어서는 안 됩니다 =
.
둘째, 하위 프로세스(스크립트)에서는 현재 환경에 영향을 미칠 수 없습니다.
환경 변수를 설정하는 스크립트를 실행하고 변경 사항이 현재 환경에 영향을 미치도록 하려면 .
(점) 또는 source
in을 사용하여 스크립트를 가져와야 합니다 bash
.
sudo
또한 스크립트를 통해 스크립트를 얻지 못할 수도 있습니다 sudo
(이 경우 이를 사용하는 이유는 확실하지 않습니다).
이는 다음과 같은 스크립트 파일을 가질 수 있음을 의미합니다.
LD_LIBRARY_PATH="/opt/mqm/lib64:$LD_LIBRARY_PATH"
그런 다음 다음 방법 중 하나를 사용하여 얻을 수 있습니다.
. ./file
또는
source ./file
대화형 셸의 셸 시작 파일에서 변수( ~/.bashrc
사용된 경우 )를 설정하고 내보내고 bash
이를 "전역적으로"(셸에서 시작된 모든 프로세스에 대해) 설정합니다.