Noob bash kerdes - export VAR="x" vs VAR="x"

Fórumok

Van-e valami kulonbseg a


$ VMI="xx"

es a


$ export VMI="xx"

parancs/szintaxis viselkedese kozott?

Ha igen, mi az? Van olyan eset, ahol a sima valtozonev es az export elotagos valtozonev assign-olas maskepp viselkedik? A "man/tldr export" page-ek peldai mukodtek "export" kulcsszo nelkul is. Megis olyan sok 3rd party bash script ragaszkodik az "export" kulcsszohoz. Miert?

Hozzászólások

Az export a subprocess-nek is lattatja a variablet,mig a masik csak az adott processben el.

Példa:


#!/bin/bash
#sc1.sh
t=100
export et=900
echo $$: $t $et 
./sc2.sh

#!/bin/bash
#sc2.sh
echo $$: $t $et

--
eutlantis

export nélkül kizárólag a shell-en belül látszik a változó és az értéke. export hatására minden ebből a shellből később indított alkalmazás is tud a változóról - ennek hatására aztán vagy történik valami, vagy nem.

$ POSIXLY_CORRECT=1
$ df /
$ export POSIXLY_CORRECT
$ df /
$ unset POSIXLY_CORRECT

=====
tl;dr
Egy-két mondatban leírnátok, hogy lehet ellopni egy bitcoin-t?

Az export annyit tesz, hogy exportálhatóvá tesz egy változót a shellen belül.
Ami azt jelenti, hogy amikor a shell elindít egy processzt, akkor a processz környezeti változói közé felveszi ezt a változót is az adott értékkel.

A szabványból idézve:
"The shell shall give the export attribute to the variables corresponding to the specified names, which shall cause them to be in the environment of subsequently executed commands."
http://pubs.opengroup.org/onlinepubs/009696799/utilities/export.html

Egyreszt +1 az eddigiekre. Par kiegeszites:

Mondjuk amikor a PATH valtozot allitgatod .bashrc-bol, akkor nem az adott scripten beluli erteke a fontos, hanem hogy tovabboroklodjon.

A masik, hogy az export var=x forma basizm, regebbi shelleknel csak a var=x, es kulon export var mukodott. Ezert lathatsz sok helyen ilyet.

--
Any A.I. smart enough to pass a Turing test is smart enough to know to fail it. -Ian McDonald

Bár nem ez a kérdés, de a

set -a

vagy

set -o allexport

feleslegessé teszi az export használatát.