set
명령은 아래와 같이 모든 지역 변수를 표시합니다. 이러한 변수를 한 번에 모두 내보내려면 어떻게합니까?
>set
a=123
b="asd asd"
c="hello world"
답변
변수를 설정하기 전에 다음 명령을 실행하십시오.
set -a
매뉴얼 페이지 :
-a
이 옵션이 켜져 있으면, 할당이 수행되는 각 변수에 대해 내보내기 속성이 설정됩니다.
이 옵션을 끄려면 set +a
나중에 실행하십시오 .
예:
set -a
. ./environment
set +a
어디에 environment
포함 :
FOO=BAR
BAS='quote when using spaces'
답변
`echo "export" $((set -o posix ; set)|awk -F "=" 'BEGIN{ORS=" "}1 $1~/[a-zA-Z_][a-zA-Z0-9_]*/ {print $1}')`
-
먼저 모든 설정된 환경 변수를 가져옵니다.
(set -o posix ; set)
참조 : https://superuser.com/questions/420295/how-do-i-see-a-list-of-all-currently-definedly-environment-variables-in-a- 리눅스 바 -
모든 환경 변수 이름 얻기 공간으로 구분 :
awk -F "=" 'BEGIN{ORS=" "}1 $1~/[a-zA-Z_][a-zA-Z0-9_]*/ {print $1}'
참조 : 새로운 라인 추가 콤마없는 AWK-인쇄 열 값 과
https://stackoverflow.com/questions/14212993/regular-expression-to-match-a-pattern-inside- awk- 명령 -
이제 이러한 변수를 내 보내야하지만 xargs는 자식 프로세스를 분기하고 내보내기는 현재 프로세스에서 실행해야하므로이를 수행 할 수 없습니다.
echo "export" ...
원하는 명령을 작성한 다음“를 사용하여 실행하십시오. 그게 다야 : p.
답변
당신은 앞에 추가 할 수 있습니다 export
통해 변수의 이름 awk
및 eval
결과 출력 :
eval $(printenv | awk -F= '{ print "export " $1 }')
답변
쉘이 bash 인 경우 작동합니다 (다른 쉘도 가능)
export > /my/env/var/file
새 파일에는 현재 정의 된 모든 변수의 덤프가 포함됩니다 …
declare -x PORT="9000"
declare -x PORT_ADMIN="3001"
declare -x PORT_DOCKER_REGISTRY="5000"
declare -x PORT_ENDUSER="3000"
declare -x PRE_BUILD_DIR="/cryptdata6/var/log/tmp/khufu01/loud_deploy/curr/loud-build/hygge"
declare -x PROJECT_ID="hygge"
declare -x PROJECT_ID_BUSHIDO="bushido"
그런 다음 모든 환경 변수 문제로 현재 쉘을 연결합니다.
source /my/env/var/file