Variabili d’ambiente (environment)

Quando si dice la serendipità! 💥
Un meraviglioso post di Julia b0rk Evans mi fornisce lo spunto per un post che diventerà presto (ma non subito) utile con la telenovela su JavaScript.

Mi sa che l’argomento viene visto in modo diverso da Linux e Windows. Comincio con Linux, anche perché è quello che 1) rockz! 🚀 ; e 2) il mio OS 💥.

Ci sono tante variabili predefinite, per esempio USER:

Posso definirne di nuove, per esempio nel terminale:

Così definita è una variabile locale al terminale che l’ha definita. Posso verificarlo con lo script vv.sh

echo $MYVAR

Non viene vista perché è locale al terminale. Per renderla globale (nel senso che sarà precisato tra poco) bisogna espertarla:

Apro uno nuovo terminale (con Ctrl-Alt-T o utilizzando il tasto destro del mouse all’interno del gestore dei files e selezionando “Apri nel terminale”) MYVAR non risulta definita:

Questo perché il nuovo terminale è indipendente da quello in cui la variabile MYVAR è stata definita.

Se invece dal terminale originario apro un terminale figlio (child), così:

MYVAR c’è come previsto. OK, con questo dovrebbe aver chiarito cosa s’intende per locale e globale.
Quando una variabile è davvero importane si può definire in uno dei file di configurazione, nel caso più normale ~/.bashrc.

Tutto questo per poterla usare negli script, ecco per esempio con Python:

import os
print(os.getenv("USER"))
print(os.getenv("MYVAR"))

E, come vedremo prossimamente con NodeJS:

console.log(process.env["USER"]);
console.log(process.env["MYVAR"]);

Windows

Io sono negato con Windows 10 ma sono riuscito a fare questo:

Per aprire il terminale che li si chiama Prompt dei comandi (o qualcosa di simile) ci sono diverse possibilità:

  • tasto Windows + S apre cerca; scrivere cmd + Invio;
  • tasto Windows + X apre il menu; selezionare findestra dei comandi (o qualcosa di simile);
  • tasto Windows + R apre una finestra per ricevere i comandi; scrivere cmd + Invio;

È possibile aprire quante finestre si vuole ma le variabili settate sono visibili solo nella finestra in cui sono state definite. A differenza di Linux non c’è distinzione tra maiuscolo e minuscolo e invece del $ iniziale il nome dev’essere riferito racchiudendolo tra %.
Inoltre l’history dei comandi viene cancellata quando si chiude la finestra.
Siccome non uso mai Windows forse ci sono altre cose che non so; suggerimenti benvenuti 😊

Argomenti sulla linea di comando
Lo vedremo anche questo prossimamente ma rispondo a una richiesta via mail. Come i normali linguaggi anche con NodeJS è possibile passare argomenti allo script che si vuole eseguire; ecco a.js:

args = process.argv
console.log(args.length)
console.log(args)
console.log(args[2])

:mrgreen:

Posta un commento o usa questo indirizzo per il trackback.

Commenti

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google photo

Stai commentando usando il tuo account Google. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.

%d blogger hanno fatto clic su Mi Piace per questo: