To mnie denerwuje. Widziałem kilka sugestii (wszystkie wykorzystujące różne pliki i składnię) i żadna z nich nie działała.
Jak ustawić zmienną środowiskową dla konkretnego użytkownika? Jestem w trakcie ściśnięcia Debiana. Jaka jest dokładna składnia, którą powinienem umieścić w pliku, aby ABC = „123”?
environment-variables
path
Gilles
źródło
źródło
.bashrc
jest do tego głównym miejscem..bash_profile
zawiera coś takiego[[ -f ~/.bashrc ]] && . ~/.bashrc
.Odpowiedzi:
Musisz umieścić deklarację w plikach inicjujących powłokę:
Jeśli używasz powłoki bash, ash, ksh lub innej powłoki w stylu Bourne'a, możesz dodać
w twoim
.profile
pliku (${HOME}/.profile
). Jest to domyślna sytuacja w większości instalacji Uniksa, w szczególności w Debianie.Jeśli twoja powłoka logowania jest bash, możesz użyć
.bash_profile
(${HOME}/.bash_profile
) lub.bash_login
zamiast tego.Uwaga: Jeśli którykolwiek z tych plików istnieje i twoja powłoka logowania jest bash,
.profile
nie jest odczytywany podczas logowania przez ssh lub na konsoli tekstowej, ale może być nadal czytany zamiast,.bash_profile
jeśli logujesz się z GUI. Ponadto, jeśli nie ma.bash_profile
, użyj.bashrc
.Jeśli ustawiłeś zsh jako powłokę logowania, użyj
~/.zprofile
zamiast~/.profile
.Jeśli używasz tcsh, dodaj
w
.login
pliku (${HOME}/.login
)jeśli używasz innej powłoki, zapoznaj się z instrukcją powłoki, jak definiować zmienne środowiskowe i które pliki są uruchamiane podczas uruchamiania powłoki.
źródło
su user
jest zmiana własności bieżącej powłoki na nazwę użytkownika arg, przy jednoczesnym zachowaniu katalogu domowego i środowiska użytkownika wywołującego. Aby wejść do powłoki w taki sposób, aby stać się nowym użytkownikiem i uzyskać wszystkie ustawienia środowiska ($ PATH, $ HOME, $ ABC itp.), Musisz przekazać - jako pierwszy argument su.su - username
osiągnie to, o co prosisz.man su
)su
w pierwszej kolejności? Czy nie stworzyłeś właśnie roota, z którego.profile
nie może korzystać użytkownik?.profile
jest odczytywany przez wszystkie powłoki zgodne z Bourne, nie powinieneś pisać w tym pliku składni Bash. W szczególnościexport VARIABLE=value
należy zmienić naVARIABLE=value; export VARIABLE
.Użyj
/etc/environment
pliku do ustawienia zmiennych środowiskowych. Następnie dodaj następujący wiersz do/etc/environment
pliku.Teraz zmienna ABC będzie dostępna ze wszystkich sesji użytkownika. Aby przetestować wyjście zmiennej, najpierw odśwież zmienną środowiskową za pomocą polecenia
i biegnij
echo $ABC
.źródło
/etc/environment
nie obsługiwać pełnej składni bash, co wymyśliłem na własnej skórze. Na przykład wstawianie,PATH="/usr/bin:/usr/sbin"
a następnie wykonywaniePATH="$PATH:/foo/bar"
w poniższym wierszu nie będzie działać/etc/environment
, nawet jeśli ponownie uruchomiłem terminal bash lub wpisałemsource /etc/environment
. Więc jeśli masz problemy, w których zmienna środowiskowa nie utrwala się, spróbuj ponownie uruchomić komputer.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:
Następnie musisz dowiedzieć się, które pliki kropek normalnie czytają te powłoki:
Skrótem, który może działać, jest lista plików kropek zawierających nazwę powłoki:
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:
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ć:
jeśli ma już wartość, lub
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:źródło
Użyj eksportu.
Aby sprawdzić, czy jest ustawiony, użyj
i / lub
Aby dodać go na stałe, dodaj go do swojego
~/.bashrc
pliku.źródło
permenate
i niepermenently
: Dbashrc
permenate
jest masz na myślipermanent
?Dokładne polecenie to:
źródło
~/.profile
i (b) pozwala na spację przed i po=
?Najlepszym sposobem, który działał dla mnie, jest modyfikacja pliku .bashrc w powłoce BASH.
użyj tego na przykład:
dodaj tę linię:
np .:
export HOME = "/home/user/"
Pamiętaj, aby używać,
""
ponieważ użycie' '
nie będzie działać, a plik bashrc zgłosi błąd podczas pozyskiwania.źródło w bieżącej sesji.
Próbowałem również zmodyfikować plik środowiskowy / etc /, ale nie pozwoliło mi to utworzyć nowej zmiennej środowiskowej, a gdy ją pozyskałem, wystąpił błąd, że nie można znaleźć zdefiniowanej zmiennej.
źródło