Questa è una procedura generale che puoi usare praticamente per qualsiasi shell. In ogni caso, devi sapere con quale shell l'utente normalmente accederà:
path="$(grep $USER /etc/passwd | cut -d ':' -f 7)"
shell="$(basename -- "$path")"
Quindi devi capire quali file di punti questa shell normalmente legge:
man $shell
Una scorciatoia che potrebbe funzionare è quella di elencare quei file dot che contengono il nome della shell:
ls ~/.*${shell}*
Se vuoi verificare se uno dei file viene effettivamente letto durante l'accesso, puoi semplicemente stampare il nome del file in ciascuno di essi, ad esempio:
echo .bashrc
Quando accedi, dovresti vedere quali file vengono letti e puoi decidere quale modificare. Fai attenzione a non provare a usare echo "$0"
o simili, perché il valore di $0
dipende da come la shell elabora i file dot e potrebbe essere fuorviante.
Quando si tratta di dichiarare la variabile "permanentemente", si noti che ciò si estende solo alla sessione. Non è possibile accedere al valore di una variabile senza una sessione, quindi non ha alcun significato al di fuori di una. Se intendi "sola lettura", dipende dalla shell e in Bash puoi usare:
declare -r VAR
se ha già un valore, o
declare -r VAR=value
per assegnarlo contemporaneamente. Non tutte le shell hanno questa funzione.
Per dichiarare una variabile nella maggior parte delle shell, dovresti usare un nome di variabile ( [A-Za-z_][A-Za-z0-9_]*
), seguito da un segno di uguale (e senza spazi attorno al segno di uguale), quindi un valore (preferibilmente tra virgolette a meno che il valore non sia semplice [A-Za-z0-9_]+
). Per esempio:
name="John Doe"
ip=127.0.0.1
HORRIBLE=1