Jest to ogólna procedura, której można użyć dla praktycznie dowolnej powłoki. W każdym razie musisz wiedzieć, z której powłoki użytkownik logowałby się normalnie:
path="$(grep $USER /etc/passwd | cut -d ':' -f 7)"
shell="$(basename -- "$path")"
Następnie musisz dowiedzieć się, które pliki kropek normalnie czytają te powłoki:
man $shell
Skrótem, który może działać, jest lista plików kropek zawierających nazwę powłoki:
ls ~/.*${shell}*
Jeśli chcesz sprawdzić, czy jeden z plików jest rzeczywiście odczytywany podczas logowania, możesz po prostu wydrukować nazwę pliku w każdym z nich, na przykład:
echo .bashrc
Podczas logowania powinieneś zobaczyć, które pliki są odczytywane i możesz zdecydować, który z nich zmodyfikować. Uważaj, że nie powinieneś próbować używać echo "$0"
lub podobnego, ponieważ wartość $0
zależy od tego, jak powłoka przetwarza pliki kropkowe, i może być myląca.
Jeśli chodzi o deklarowanie zmiennej „na stałe”, pamiętaj, że dotyczy to tylko sesji. Nie ma możliwości uzyskania dostępu do wartości zmiennej bez sesji, więc nie ma ona znaczenia poza jedną. Jeśli masz na myśli „tylko do odczytu”, to jest zależne od powłoki, aw Bash możesz użyć:
declare -r VAR
jeśli ma już wartość, lub
declare -r VAR=value
aby przypisać to w tym samym czasie. Nie wszystkie muszle mają tę funkcję.
Aby zadeklarować zmienną w większości powłok, należy użyć nazwy zmiennej ( [A-Za-z_][A-Za-z0-9_]*
), po której następuje znak równości (i bez spacji wokół znaku równości), a następnie wartość (najlepiej cytowana, chyba że wartość jest prosta [A-Za-z0-9_]+
). Na przykład:
name="John Doe"
ip=127.0.0.1
HORRIBLE=1