Możesz to zrobić po prostu zadeklarując jako nowy w wierszu poleceń lub ponownie deklarując. Na przykład, jeśli chcesz dodać ~/testfolder
do zmiennej ścieżki, możesz po prostu wpisać ją w bieżącym terminalu (to tylko przykład):
PATH="$HOME/testfolder:$PATH"
To oczywiście zmieni to tylko na czas, kiedy powiedziałeś, że sesja terminalowa jest otwarta. Zwróć uwagę na $
użycie tutaj, pomijasz je dla deklaracji, ale jeśli chcesz je wyświetlić, musisz dodać, $
aby rozwinąć jego zawartość.
Jeśli chcesz zadeklarować, że są bardziej trwałe i ogólne, możesz dodać je do ~/.bashrc
pliku (tylko dla Ciebie) lub do /etc/bash.bashrc
(całego systemu), na przykład, jeśli chcesz, aby liczyły się tylko dla Ciebie lub dla wszystkich użytkowników. Inną opcją jest dodanie go do .profile
pliku (tylko dla siebie), gdzie będzie to możliwe od momentu zalogowania. Możesz to zrobić echo
na przykład, jeśli masz pewność, że ta zmienna nie jest już ustawiona lub jeśli tworzysz nowe (tylko przykład):
echo "variable=value" >> /path/filename
Jeśli jednak chcesz edytować plik poza katalogiem użytkownika, co ma miejsce w przypadku edycji /etc/bash.bashrc
, musisz użyć, sudo
więc nie możesz po prostu użyć „dokumentu tutaj”, ponieważ to nie zadziała, zamiast tego użyj linii takiej jak poniżej:
echo "variable=value" | sudo tee -a /path/filename
Jeśli zmienna już istnieje, możesz ją zmienić za pomocą sed
polecenia (również tylko przykład):
sed -i.bak 's/variable=value/variable=new-value/' /path/filename
Spowoduje to edycję zmiennej w pliku, ale utworzy kopię zapasową przed edycją. Jeśli zmienisz pliki poza katalogiem użytkownika za pomocą sed, musisz użyć sudo
w większości przypadków, aby wiersz brzmiał:
sudo sed -i.bak 's/variable=value/variable=new-value/' /path/filename
Usunięcie zmiennej z pliku można również wykonać sed
, wystarczy pozostawić drugą część wyrażenia regularnego pustą:
sed -i.bak 's/variable=value//' /path/filename
Jeśli jesteś zainteresowany, które zmienne środowiskowe są ustawione, możesz użyć env
polecenia, aby je wyświetlić, ( set -o posix ; set ) | less
lub sh -c set
. Wszystkie trzy dają różne wartości wyjściowe, ( set -o posix ; set ) | less
zwracając najwięcej ustawionych zmiennych.
( set -o posix ; set )
łatwiej powiedziećsh -c set
. Działa to nawet, jeślish
jest dowiązaniem symbolicznym dobash
(co zwykle nie jest dostępne w nowoczesnych wersjach Ubuntu).sh -c set
nie pokazuje tak naprawdę wszystkich zmiennych środowiskowych ustawionych w systemie. Jednak dołączę to jako trzeci sposób pokazania niektórych z nich.sh -c set
pokazuje wszystkie zmienne środowiskowe . Po prostu nie pokazuje zmiennych powłoki wywołującej powłoki, ale nigdy nie są dziedziczone przez proces uruchamiany z tej powłoki, chyba że tyexport
./etc/environment
? Wydaje się, że to skrót do zamieszania.Nie ma bezpośredniego odpowiednika
setx /m
, ale istnieją sposoby na osiągnięcie tego, co sięsetx /m
dzieje.setx /m
putsvariable=value
inHKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
. Nie- / m (tj per-user)setx
po prostu wkładavariable=value
sięHKCU\Environment
.W szczególności poprosiłeś o „systemowy”. W tym celu należy dodać parę wartości zmiennej do
/etc/environment
OR lub do/etc/profile.d/<yourfile>
. Pierwszy jest oceniany przez pam, a drugi przez/bin/sh
. W ten sposób/etc/profile.d/<yourfile>
dodałbyśvariable=value; export variable
. (bash także pozwalaexport variable=value
). Do/etc/environment
dodaniavariable=value
.Odpowiednikami na użytkownika są
~/.pam_environment
i~/.profile
.Zobacz także: https://help.ubuntu.com/community/EnvironmentVariables
źródło
Możesz eksportować zmienne środowiskowe z wiersza poleceń, ale nie wpłynie to na efektywne środowisko w już uruchomionych procesach, tylko w bieżącym procesie i jego podprocesach. W praktyce więc często trzeba ponownie zalogować się podczas zmiany zmiennych środowiskowych.
źródło