linux 명령 줄 도구 env
은 현재 환경을 덤프 할 수 있습니다.env -0 덤프 환경. 하지만 어떻게로드 할 수 있습니까?
일부 특수 문자가 있으므로 env -0
을 사용하고 싶습니다 (개개의 출력 행을 개행 문자 대신 0 바이트로 끝내십시오).
그러나이 덤프를 다시로드하는 방법은 무엇입니까?
배쉬 버전 :
linux 명령 줄 도구 env
은 현재 환경을 덤프 할 수 있습니다.env -0 덤프 환경. 하지만 어떻게로드 할 수 있습니까?
일부 특수 문자가 있으므로 env -0
을 사용하고 싶습니다 (개개의 출력 행을 개행 문자 대신 0 바이트로 끝내십시오).
그러나이 덤프를 다시로드하는 방법은 무엇입니까?
배쉬 버전 :
이 env
를 사용하지 마십시오을; 다시 실행될 수있는 형식으로 내 보낸 변수의 값을 출력하는 declare -px
을 사용하십시오. 단지합니다 (-x
옵션을 삭제) declare -p
를 사용
$ declare -px > env.sh
$ source env.sh
이것은 또한 당신에 대한 액세스 권한이없는 env
뿐만 아니라 비 -exported 변수를 저장하는 가능성을 제공합니다. 당신이 foo=$'hello\nworld'
을 쓴 경우 declare -px
가
declare -x foo="hello
world"
예, 개행 문자가 변수에 있어도 작동합니다. 고맙습니다. – guettli
당신이 Set environment variables from file에 설명되어있는 것을 사용할 수 env
의 수출로드하려면 4.2.53 :
env > env_file
set -o allexport
source env_file
set +o allexport
을하지만 -0
로 내보낼 일 경우 사용을 ()에서 man env
:
-0 0 바이트 레스와 --null
단부 각 출력 라인 어 줄 바꿈보다
그래서 당신은 문자 구분 기호로 0
을 사용하여 파일을 통해 루프는 줄의 끝 (What does IFS= do in this bash loop: cat file | while IFS= read -r line; do … done
더 설명) 표시 할 수 있습니다
env -0 > env_file
while IFS= read -r -d $'\0' var
do
export "$var"
done < env_file
이
첫 번째 해결책은 내 경우에 작동하지 않는다 :'env> env_file''set -o allexport''source env_file' 출력'-bash : PROFILEREAD : 읽기 전용 변수 bash : 52052 : 명령을 찾을 수 없습니다 ... 찾을 수없는 메시지)' – guettli
두 번째 해결책 (env -0)은 다음을 제외하고 작동합니다 :'PROFILEREAD readonly variable' – guettli
@guettli uhms 이것은 당신의 변수가 읽기 전용으로 설정 되었기 때문입니다. 그들을 재설정하는 방법에 대한 몇 가지 해킹이 있습니다. (http://stackoverflow.com/a/17398009/1983854) ... – fedorqui
당신이'load' 무엇을 의미합니까 출력을 생성하는 동안
는 예를 들어,
env
출력을을 생산? – hek2mgl
@ hek2mgl "로드"는 다른 쉘에서이 변수들을 설정하는 것을 의미합니다. – guettli