bash: Argument list too long [megoldva]

Ezt kapom az egyik scriptbol hivott scriptben: "Argument list too long" mikozben a script hivatkozott soraban egyaltalan nem tunik hosszunak az az argumentum lista.
Tipikusan ilyen akkor szokott lenni, ha az ember "*"-gal dolgozik file-okon es tul sok file van. Nalam, most egyaltalan nem ez a helyzet, tenyleg argumentumok vannak ott sorolva 3 soron keresztul (valtozok es jokerek nelkul), de ez egyreszt szerintem messze van a bash korlataitol, masreszt meg ugyanezt a scriptet kozvetlenul shell-bol inditva, jol lefut, nyoma sincs a fenti hiba uzenetnek.

Valahogy igy van most:

a.sh -> b.sh -> c.sh -> "Argument list too long"
b.sh -> c.sh -> "Argument list too long"
c.sh -> "OK"

Kettevagtam a c.sh scriptet es ez is megoldotta a problemat:

a.sh -> b.sh -> { c1.sh; c2.sh } -> "OK"

Akar hasznalhatnam is igy, de jo lenne erteni, hogy miert mukodik/nem mukodik igy.
-------------------------------------------------------------------------------------
Megoldas:
A problema vegul valoban a kornyezeti valtozok korul volt (kossz a tippet Zahy). A bena sajat scriptjeink miatt volt egy ilyen valtozo ertekatas a .profile-ban:


alma=valami:$alma:$alma:$alma:$alma:$alma

ami persze helyesen ilyen lett volna:


alma=valami:$alma

de a (megintcsak bena) install scriptek tobbszor lefuttatva (reinstall) valamiert ezt eredmenyezik.

Tovabbi benasag :) hogy a .profile -t tobb script is include-olja (ami felesleges, hiszen azok a valtozok mar ugyis elnek) es a fenti alma=... ertekadas tobbszor is meghivodik. Vagyis elso alkalommal 5-szorosere, masodikra 5*5-szorosere no a valtozo... A sok egymasbol hivott script es a .profile tobbszori include-olasa vegul egy 300kB-os(!) valtozot eredmenyezett :) es ezutan jott "Argument list too long"...

Hozzászólások

Ugyanezt az üzenetet (sajnos :-) ) a környezeti változók mértéktelen használatával is el lehet érni, ha jól tudom a kettő együtt kell egy adott korlát alatt legyen.

Beírnád a konkrét scripteket, ill. a releváns részeiket?

Probakeppen a scripted elejen source-old a shell init file-jaidat (~/.bashrc ~/.bash_login ~/.profile ~/.bash_profile stb).