set
parancs az összes helyi változót megjeleníti, mint az alábbiakban. Hogyan exportálhatom ezeket a változókat egyszerre?
>set a=123 b="asd asd" c="hello world"
Megjegyzések
Válasz
A változók beállítása előtt futtassa a következő parancsot:
set -a
man oldal:
-a
Ha ez a beállítás be van kapcsolva, akkor az export attribútumot mindegyikhez be kell állítani változó, amelyhez hozzárendelést hajtanak végre;
Ennek az opciónak a kikapcsolásához futtassa az set +a
parancsot.
Példa:
set -a . ./environment set +a
Ahol a environment
tartalmazza:
FOO=BAR BAS="quote when using spaces"
Megjegyzések
- Ezt azonban engedélyezni kell a változókhoz való hozzárendelés előtt. Nem tesz ' semmit a korábban hozzárendelt változókhoz.
- @chepner, köszönöm, ezt elfelejtettem megemlíteni !!
- Ez is automatikusan a funkciókat ugyanúgy exportálja, mint a
function example(){ echo good; }; export -f example
Válasz
Ez akkor működik, ha a shellje bash (esetleg más shellek is)
export > /my/env/var/file
az új fájl tartalmazza az összes jelenleg definiált változó kiírását … bejegyzésekkel tetszik
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"
majd az aktuális héj felemeléséhez mindazokkal az env vars kérdésekkel
source /my/env/var/file
Válasz
`echo "export" $((set -o posix ; set)|awk -F "=" "BEGIN{ORS=" "}1 $1~/[a-zA-Z_][a-zA-Z0-9_]*/ {print $1}")`
-
Először szerezze be az összes beállított környezeti változót:
(set -o posix ; set)
Hivatkozás: https://superuser.com/questions/420295/how-do-i-see-a-list-of-all-currently-defined-environment-variables-in-a-linux-ba -
Az összes környezeti változó neve szóközzel elválasztva:
awk -F "=" "BEGIN{ORS=" "}1 $1~/[a-zA-Z_][a-zA-Z0-9_]*/ {print $1}"
Hivatkozás: awk – oszlopérték nyomtatása e új sor nélkül, vessző hozzáadásával és https://stackoverflow.com/questions/14212993/regular-expression-to-match-a-pattern-inside-awk-command -
Most exportálnunk kell ezeket a változókat, de az xargs ezt nem tudja megtenni, mert elvarázsolja a gyermek folyamatokat, az exportálást az aktuális folyamat alatt kell futtatni.
echo "export" ...
készítsen egy kívánt parancsot, majd a “” használatával futtassa azt. Ez mind: p.
Megjegyzések
- Welcomme az U & L SE. Lehet, hogy szerkesztheti a bejegyzését, és magyarázatot adhat.
- Nem helyes, ha azt feltételezzük, hogy a környezeti változó nevei kizárólag az és AZ. Ezek általában aláhúzást és számjegyeket is tartalmaznak, így a minta a következő lenne:
[a-zA-Z_][a-zA-Z0-9_]*
. Ebben van néhány variáció a héj alapján, amelyet ' újra használja, de ez a biztonságos / hordozható megközelítés. - Jó pont @ChrisJohnson – frissítve!
Válasz
Előfordulhat, hogy export
előre beállíthatja a változó nevét a awk
és a a kapott kimenet:
eval $(printenv | awk -F= "{ print "export " $1 }")
Megjegyzések
-
printenv
kinyomtatja a már exportált változókat. Ez szintén nyert ' t ha vannak olyan változók, amelyek új sor karaktereket tartalmaznak.
set
olyan funkciókat és rendszerváltozókat is megjelenít, mint a BASH_VERSIONset
kimenetből, amelyet ' mutat? Ha igen, akkor ' nembash
' s. Exportálni szeretné az összes jelenleg beállított változót, beleértve a speciális héjváltozókat is? Vagy csak az a 3 változó, mint például aexport a b c
?export ${!T*}
bármely meghatározott paramétert exportálna, amelynek neveT
. Sajnos a ' nem tűnik úgy, hogy egyszerűen létrehozza az összes meghatározott paraméterek listáját.