Podniosłem - prawdopodobnie na Usenecie w połowie lat 90. (!) - ten konstrukt
export var=value
jest baszizmem, a tym przenośnym wyrażeniem jest
var=value
export var
Opowiadam się za tym od lat, ale ostatnio ktoś mnie o to rzucił i naprawdę nie mogę znaleźć żadnej dokumentacji na poparcie tego, co kiedyś było moją solidną wiarą.
Googling "export: command not found"nie wydaje się przywoływać przypadków, w których ktoś rzeczywiście miał ten problem, więc nawet jeśli jest to autentyczne, myślę, że nie jest to zbyt powszechne.
(Trafienia, które dostaję, wydają się być nowicjuszami, którzy kopiują / wklejają interpunkcję i skończyli z 'export: command not foundniektórymi lub starają się exportz nimi korzystać sudo; i nowi cshużytkownicy próbują używać składni powłoki Bourne'a.)
Z pewnością mogę powiedzieć, że działa na OS X i na różnych dystrybucjach Linuksa, w tym tych, gdzie shjest dash.
sh$ export var=value
sh$ echo "$var"
value
sh$ sh -c 'echo "$var"' # see that it really is exported
value
Czy w dzisiejszym świecie można bezpiecznie stwierdzić, że export var=valuejest bezpieczny w użyciu?
Chciałbym zrozumieć, jakie są konsekwencje. Jeśli nie jest przenośny na v7 „Bourne classic”, to niewiele więcej niż ciekawostki. Jeśli istnieją systemy produkcyjne, w których powłoka naprawdę nie radzi sobie z tą składnią, warto by to wiedzieć.
busyboxma własnej minimalnej powłoki? (Nie jestem w stanie ani spróbować w tej chwili.)