Modifica della variabile $ path di zsh in uno script che deve essere fornito

StackOverflow https://stackoverflow.com/questions/1208831

  •  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?

È stato utile?

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.

http://zsh.sunsite.dk/Contrib/startup/std/zshenv

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top