Modifica della variabile $ path di zsh in uno script che deve essere fornito
-
05-07-2019 - |
Domanda
Ho ereditato uno script zsh che imposta un gruppo di variabili d'ambiente per alcune simulazioni. Vuole modificare la variabile $ path in modo da poter trovare alcuni script perl:
typeset -U path
path=( ${SIMENV_BIN} $path )
Tuttavia, quando provo lo script ( source setup.source
) la variabile $ path rimane invariata. Se copio nuovamente queste righe al prompt dei comandi, esse eseguono aggiornano $ percorso. Se cospargo 'echo's nello script e lo fonte nuovamente, il comando typeset sembra cancellare la variabile $ path.
Qualcuno vorrebbe spiegarmi cosa sta succedendo e come posso risolverlo?
Soluzione
Per impostazione predefinita, il comando typeset crea una nuova variabile con il nome fornito che è locale alla funzione corrente, quindi le modifiche a quella variabile andranno perse quando la funzione ritorna. Aggiungi l'opzione -g
:
typeset -gU path
Ciò impedirà di localizzare la variabile.
Altri suggerimenti
Penso che potresti aver bisogno di usare .zshenv poiché proviene da tutte le invocazioni della shell.