set
이 명령은 아래와 같이 모든 지역 변수를 표시합니다. 이러한 변수를 한 번에 내보내려면 어떻게 해야 합니까?
>set
a=123
b="asd asd"
c="hello world"
답변1
변수를 설정하기 전에 다음 명령을 실행하십시오.
set -a
set -o allexport # self-documenting version
-a
이 옵션이 활성화되면 할당이 수행될 각 변수에 대해 내보내기 속성을 설정해야 합니다.
-o option-name
해당 옵션을 설정하십시오option-name
.
allexport
와 동일합니다-a
.
이 옵션을 끄려면 set +a
또는 set +o allexport
이후를 실행하세요.
예:
set -a # or: set -o allexport
. ./environment
set +a
여기에는 다음이 environment
포함됩니다.
FOO=BAR
BAS='quote when using spaces, (, >, $, ; etc'
답변2
선택한 답변과 동일한 초기 요구 사항...다음과 같이 각 변수를 명시적으로 내보냅니다.
export aaaa=1234
또는 변수 할당 문제가 발생하기 전에
set -a # for details see answer by @nitin
쉘이 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
답변3
`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-define-environment-variables-in-a-linux-ba공백으로 구분된 모든 환경 변수 이름을 가져옵니다.
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-command이제 이러한 변수를 내보내야 하지만 xargs는 하위 프로세스를 포크하고 내보내기는 현재 프로세스에서 실행되어야 하기 때문에 이를 수행할 수 없습니다.
echo "export" ...
원하는 명령을 작성한 다음 ``를 사용하여 실행하세요. 그게 다야 :p.
답변4
compgen -v
모든 변수 이름 목록을 인쇄하여 모두 내보낼 수 있습니다.
export $(compgen -v)
정의한 변수에 따라 다양한 효과가 나타납니다(예:BASHOPTS
여기에서 내보낼 것입니다.). 사용방법에 주의하시기 바랍니다.