Settare Variabili Permanenti per TUTTI i Terminali

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Avatar utente
keltron
Prode Principiante
Messaggi: 58
Iscrizione: venerdì 2 novembre 2007, 10:49
Contatti:

Settare Variabili Permanenti per TUTTI i Terminali

Messaggio da keltron »

Ciao a tutti,
ho visto la presenza di un topic con un titolo simile, ma leggendolo non ho trovato risposta esatta a quello che cercavo.
Sostanzialmente so bene che per impostare una variabile d'ambiente si usa il comando export, ma questo setta una variabile solo per la shell e le sue figlie.
Io invece avrei bisogno di una variabile permanente, globale per tutte le shell.
Ad esempio se chiamo la variabile CONTATORE, e nella shell in cui la creo vale 10, vorrei che nell'aprire un nuovo terminale, anche per quest'ultimo la variabile debba esistere e valere 10, e magari modificandola a 11, anche nel primo terminale questa dovrebbe risultare 11.

Questo sono riuscito a realizzarlo semplicemente facendo in modo che di volta in volta il valore della variabile venga scritto e letto in un semplice file di testo... ma sono convinto che esista un modo meno grezzo per fare questo... e naturalmente mi piacerebbe colmare questa mia ignoranza! :D

Grazie per l'attenzione!
"There are no stupid questions, but only stupid answers"
Avatar utente
vaeVictis
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4703
Iscrizione: venerdì 27 luglio 2012, 17:58
Desktop: Gnome
Distribuzione: Ubuntu 20.04 64bit

Re: Settare Variabili Permanenti per TUTTI i Terminali

Messaggio da vaeVictis »

Per "tutte le shell" intendi tutte le shell aperte da un singolo utente o tutte le shell aperte da tutti i vari utenti del sistema?
A seconda di cosa intendi, devi andare a modificare il file di configurazione della shell, quello "globale" nel primo caso e quello "personale" nel secondo caso.
Pirates arrrrrrrrrrr awesome!!!
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
Avatar utente
keltron
Prode Principiante
Messaggi: 58
Iscrizione: venerdì 2 novembre 2007, 10:49
Contatti:

Re: Settare Variabili Permanenti per TUTTI i Terminali

Messaggio da keltron »

Sorry, effettivamente non sono stato chiaro in questo:
la domanda era riferita a tutte le shell aperte dal singolo utente, ma potrebbe anche essere interessante sapere come si potrebbe fare anche per tutto il sistema!
In ogni caso saresti cosi' gentile da dirmi quali sono questi file?
Per configurarli intendi dire che mi basta dichiarare le variabili dentro ad essi, ed in automatico queste variabili vengono ereditate o dal singolo utente o da tutti gli utenti, a seconda del file che configuro? Se cosi' fosse, i cambiamenti fatti in una singola shell si estenderebbero automaticamente a tutte le altre?
"There are no stupid questions, but only stupid answers"
Avatar utente
vaeVictis
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4703
Iscrizione: venerdì 27 luglio 2012, 17:58
Desktop: Gnome
Distribuzione: Ubuntu 20.04 64bit

Re: Settare Variabili Permanenti per TUTTI i Terminali

Messaggio da vaeVictis »

Ti passo volentieri questo link in cui si fa una panoramiche delle varie configurazioni che vengono date ad una shell tramite i file di startup (non so se siano presenti tutti, su tutte le distribuzioni).

Per quello che vuoi fare tu, ti basta aggiungere il comando:

Codice: Seleziona tutto

export NOMEVARIABILE=VALOREVARIABILE
nel file ~/.bashrc
In questo modo, ogni volta che apri una shell avrai il comportamento desiderato
Non ricordo quale dove devi andare a scrivere questa riga di codice se vuoi che il comportamento sia esteso a tutte le shell di tutti gli utenti, ma immagino sia indicato nel link qui sopra.

Un'altra risorsa interessante questaè questa[/url].
Mi spiace che sia tutto materiale in inglese.
Se ci sono problemi, dimmelo che ti cerco qualcosa in italiano :)

Ciao.
Pirates arrrrrrrrrrr awesome!!!
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
Avatar utente
keltron
Prode Principiante
Messaggi: 58
Iscrizione: venerdì 2 novembre 2007, 10:49
Contatti:

Re: Settare Variabili Permanenti per TUTTI i Terminali

Messaggio da keltron »

Ti ringrazio della risposta, e sicuramente leggero' il link che mi hai gentilmente fornito!
In ogni caso il comando export nel .bashrc sicuramente non funziona, in quanto provando ho verificato che effettivamente la variabile esportata risulta valida per la shell e le sue subshell, ma non per eventuali terminali aperti separatamente (ad esempio con l'ausilio del mitico amico/programma "screen").
"There are no stupid questions, but only stupid answers"
Avatar utente
vaeVictis
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4703
Iscrizione: venerdì 27 luglio 2012, 17:58
Desktop: Gnome
Distribuzione: Ubuntu 20.04 64bit

Re: Settare Variabili Permanenti per TUTTI i Terminali

Messaggio da vaeVictis »

Molto probabilmente devi modificare il file
.screenrc
ma non l'ho mai usato.
Pirates arrrrrrrrrrr awesome!!!
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
Avatar utente
vaeVictis
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4703
Iscrizione: venerdì 27 luglio 2012, 17:58
Desktop: Gnome
Distribuzione: Ubuntu 20.04 64bit

Re: Settare Variabili Permanenti per TUTTI i Terminali

Messaggio da vaeVictis »

Aspetta, però.
Non ti seguo.

Ho aperto un terminale, e ho dato il comando:

Codice: Seleziona tutto

vaevictis@HAL:~$ echo $foo 

che ovviamente non mi ha prodotto niente, perché tale variabile non esiste.
Al che ho lanciato screen e ridato il comando, per poi uscire da screen con ctrl+d:

Codice: Seleziona tutto

aevictis@HAL:~$ echo $foo 

vaevictis@HAL:~$ screen
[screen is terminating]
Anche qui, non compare nulla, perché la variabile non è stata impostata.

Pertanto, ho aperto il file ~/.bashrc e ho aggiunto alla fine:

Codice: Seleziona tutto

export foo="variabile impostata"
Da dentro l'usuale terminale ho:

Codice: Seleziona tutto

vaevictis@HAL:~$ echo $foo 
variabile impostata
Poi lancio screen e ho ridato lo stesso comando (e poi ctrl+d per uscire da screen):

Codice: Seleziona tutto

vaevictis@HAL:~$ echo $foo 
variabile impostata
vaevictis@HAL:~$ screen
[screen is terminating]
Pirates arrrrrrrrrrr awesome!!!
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
DjDiabolik
Prode Principiante
Messaggi: 133
Iscrizione: venerdì 30 marzo 2012, 4:03

Re: Settare Variabili Permanenti per TUTTI i Terminali

Messaggio da DjDiabolik »

Scusatemi se mi collego ad un thread di esattamente 12 anni fà ma a me "servirebbe" esattamente la stessa cosa.

Cioè io ho due finestre di terminali aperte distintivamente.
Sulla prima io do export temp_var=1
Apro il secondo terminale e il comando env | grep temp_var non mi restituisce nulla.

Se ho capito un pò leggendo vari link in rete potrei "allegare" questa variabile nel file .bashrc in qualcosa del genere.
Sul primo terminale do echo 'export temp_var=1' >> ~/.bashrc . Questa cosa qua dovrebbe aggiungere una riga esattamente nel file .bashrc in fondo

Il problema forse sta che facendo questa cosa qua la seconda finestra di terminale va aperta in un secondo momento perchè se ho capito bene lo stesso file .bashrc viene ricaricato ad ogni nuova finestra del terminale stesso.

Se proprio poi volete il problema di questa variabile scritta nel file .bashrc è che in teoria poi non posso modificarla in tempo reale se non riavviando la finestra del terminale oppure nello stesso file .bashrc se io rifaccio echo 'export temp_var=0' >> ~/.bashrc mi crea una nuova riga in fondo allo stesso file e non mi va a modificare quella creata precedentemente.

Sempre in questo caso e sempre leggendo in giro si potrebbe optare per creare un file temporaneo da qualche parte e quindi leggere/scrivere quel file temporaneo col source . Il file temporaneo in questione dovrebbe contenere tipo temp_var=1 cosi che ogni volta che io uso il source filetemporaneo appunto mi viene ricreata la variabile $temp_var

E' un pò macchinosa come soluzione..... anche perchè dovrei modificare quel filetemporaneo ogni qualvolta necessito di modificare il valore di quella variabile (e quindi rifare il source per riprenderne il nuovo valore quando mi serve).

Quando appena detto non ne ho testato il funzionamento perchè attualmente, come detto, mi "servirebbe" questa cosa.... ma se avete suggerimenti alternativi su come agire sono tutto orecchi. Grazie in anticipo.
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 3 ospiti