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 found
niektórymi lub starają się export
z nimi korzystać sudo
; i nowi csh
uż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 sh
jest 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=value
jest 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ć.
busybox
ma własnej minimalnej powłoki? (Nie jestem w stanie ani spróbować w tej chwili.)