Jak ustawić globalną zmienną środowiskową w skrypcie bash?
Jeśli robię takie rzeczy
#!/bin/bash
FOO=bar
...lub
#!/bin/bash
export FOO=bar
... zmienne wydają się pozostawać w lokalnym kontekście, ale chciałbym nadal ich używać po zakończeniu wykonywania skryptu.
source
jest aliasem dla.
. Więcsource myscript.sh
zamiast tego możesz biegać , jeśli chcesz być bardziej wyraźny.Po uruchomieniu skryptu powłoki odbywa się to w powłoce podrzędnej, więc nie może wpływać na środowisko powłoki nadrzędnej. Chcesz pobrać skrypt, wykonując:
Powoduje to wykonanie go w kontekście bieżącej powłoki, a nie jako podrzędny .
Ze strony podręcznika bash:
źródło
source myscript.sh
jest również wykonalne.Opis polecenia linux
source
:source is a Unix command that evaluates the file following the command, as a list of commands, executed in the current context
źródło
source
robi?man source
terminal, a otrzymasz to, czego chcesz.source
. Może OP nie jest.#!/bin/bash export FOO=bar
lub
#!/bin/bash FOO=bar export FOO
eksport ludzi:
Powłoka nada atrybut eksportu zmiennym odpowiadającym określonym nazwom, co spowoduje, że znajdą się one w środowisku kolejnych wykonywanych poleceń. Jeżeli po nazwie zmiennej występuje = słowo, wówczas wartość tej zmiennej należy ustawić na słowo.
źródło
export FOO = /mydir/bar
FOO=bar export FOO
źródło