Jak na stałe ustawić $PATH Na Linux / Unix?

Próbuję dodać katalog do mojej ścieżki, aby zawsze był w mojej ścieżce Linuksowej. Próbowałem:

export PATH=$PATH:/path/to/dir

To działa, jednak za każdym razem, gdy opuszczam terminal i uruchamiam nową instancję terminala, ścieżka ta jest tracona i muszę ponownie uruchomić polecenie export.

Jak mogę to zrobić, aby to zostało ustawione na stałe?

Author: cpxPratik, 2013-02-01

20 answers

Musisz dodać go do pliku ~/.profile lub ~/.bashrc. 

export PATH="$PATH:/path/to/dir"

W zależności od tego, co robisz, możesz również chcieć dowiązać symbolicznie do binariów:

cd /usr/bin
sudo ln -s /path/to/binary binary-name

Pamiętaj, że nie będzie to automatycznie aktualizować ścieżki do końca sesji. aby to zrobić, należy uruchomić:

source ~/.profile 
or
source ~/.bashrc
 778
Author: mpowered,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-27 23:25:22

Nie mogę uwierzyć, że nikt nie wspomniał o pliku. Jego jedynym celem jest przechowywanie zmiennych środowiskowych. Pierwotnie zdefiniowana jest tutaj zmienna $PATH. To jest wklejka z mojego pliku /etc/environment:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"

Więc możesz po prostu otworzyć ten plik jako root i dodać cokolwiek chcesz.

Dla natychmiastowych wyników, Run (try as normal user and root):

source /etc/environment && export PATH

UPDATE:

Jeśli używasz zsh (a.k.A Z Shell), dodaj tę linię zaraz po komentarzach w /etc/zsh/zshenv:

source /etc/environment

na Ubuntu 15.10 natknąłem się na takie małe dziwactwo, ale jeśli twój zsh nie ma prawidłowej ścieżki , to może być powód

 210
Author: Zeus77,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-03 21:59:33

Można to zrobić na wiele sposobów. Rzeczywiste rozwiązanie zależy od celu.

Wartości zmiennych są zwykle przechowywane na liście zadań lub w skrypcie powłoki uruchamianym na początku sesji systemu lub użytkownika. W przypadku skryptu powłoki należy użyć określonej składni powłoki.

System wide

  1. /etc/environment lista unikalnych zadań. Idealny do dodawania katalogów systemowych, takich jak /usr/local/something/bin do zmiennej PATH lub definiowanie JAVA_HOME.
  2. /etc/xprofile skrypt powłoki wykonywany podczas uruchamiania sesji X Window System. Jest to uruchamiane dla każdego użytkownika logującego się do X Window System. Jest to dobry wybór dla PATH wpisy, które są ważne dla każdego Użytkownika jak /usr/local/something/bin. Plik jest dołączany przez inny skrypt, więc używaj składni powłoki POSIX, a nie składni powłoki użytkownika.
  3. /etc/profile i /etc/profile.d/* skrypt powłoki. Jest to dobry wybór dla Systemów tylko powłoki. Te pliki są odczytywane tylko przez powłoki.
  4. /etc/<shell>.<shell>rc. Skrypt powłoki. To jest kiepski wybór, ponieważ jest specyficzny dla pojedynczej powłoki.

Sesja użytkownika

  1. ~/.pam_environment. Lista unikalnych zadań. Ładowane przez PAM na początku każdej sesji użytkownika, jeśli jest to sesja X Window System lub powłoka. Nie można odwoływać się do innych zmiennych, w tym HOME lub PATH, więc ma ograniczone zastosowanie.
  2. ~/.xprofile skrypt powłoki. Jest to wykonywane, gdy użytkownik loguje się do systemu X Window System. Zdefiniowane tu zmienne są widoczne dla każdego X podanie. Idealny wybór do rozszerzenia {[2] } o wartości takie jak ~/bin lub ~/go/bin lub zdefiniowania specyficznego dla użytkownika GOPATH lub NPM_HOME. Plik jest dołączany przez inny skrypt, więc używaj składni powłoki POSIX, a nie składni powłoki użytkownika. Twój graficzny edytor tekstu lub IDE uruchomiony skrótem zobaczy te wartości.
  3. ~/.profile skrypt powłoki. Będzie on widoczny tylko dla programów uruchamianych z terminala lub emulatora terminala. Jest to dobry wybór dla Systemów tylko powłoki.
  4. ~/.<shell>rc. Skrypt powłoki. Jest to zły wybór, ponieważ jest specyficzny dla pojedynczej powłoki.

Dokumentacja specyficzna dla dystrybucji

 118
Author: Grzegorz Żur,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-15 13:43:24

Umieść deklarację export w ~/.bashrc. Ojej .bashrc Zawiera to:

export PATH=/var/lib/gems/1.8/bin:/home/fraxtil/.bin:$PATH
 67
Author: Fraxtil,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-01 00:59:39

Możesz ustawić $PATH na stałe na 2 sposoby.

  1. Aby ustawić ścieżkę dla konkretnego użytkownika : Może być konieczne dokonanie wpisu w .bash_profile w katalogu domowym użytkownika.

    np. w moim przypadku ustawię ścieżkę Javy w profilu użytkownika tomcat

    [tomcat]$ echo "export PATH=$PATH:/path/to/dir" >> /home/tomcat/.bash_profile
    
  2. Aby ustawić wspólną ścieżkę dla wszystkich użytkowników systemu, może być konieczne ustawienie ścieżki w następujący sposób:

    [root~]# echo "export PATH=$PATH:/path/to/dir" >> /etc/profile
    
 29
Author: Mohit M,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-25 16:54:14

Możesz użyć na Centos lub RHEL dla użytkownika lokalnego:

echo $"export PATH=\$PATH:$(pwd)" >> ~/.bash_profile

To dodaje bieżący katalog (lub możesz użyć innego katalogu) do ścieżki, to czyni go stałym, ale działa przy następnym logowaniu użytkownika.

Jeśli nie chcesz zrobić ponownego logowania, możesz użyć:

source ~/.bash_profile

That reload the # User specific environment and startup programs this comment is present in .bash_profile

 10
Author: Daniel Antonio Nuñez Carhuayo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-21 04:11:17

Myślę, że najbardziej elegancki sposób to:

1.dodaj to w~/.plik bashrc Uruchom to polecenie

Gedit ~/.bashrc

Dodaj swoją ścieżkę wewnątrz

Export PATH=$PATH:/opt / node / bin

2.źródło~/.bashrc

(Ubuntu)

 6
Author: Himanshu sharma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-07 05:51:40

Możesz dodać tę linię do pliku konfiguracyjnego konsoli (np.bashrc), lub do .profil

 5
Author: aqua,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-01 00:59:22

Natknąłem się wczoraj na to pytanie, szukając sposobu na dodanie folderu zawierającego moje własne skrypty do ścieżki - i byłem zaskoczony, że mój własny plik ~/.profile (W Linux Mint 18.1) już to zawierał:

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

Tak więc, wszystko co musiałem zrobić, to stworzyć folder ~/bin i umieścić tam moje Skrypty.

 5
Author: RobertG,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-04 11:09:57

Można również ustawić na stałe, edytując jeden z tych plików:

/etc/profile (dla wszystkich użytkowników)

~/.bash_profile (dla bieżącego użytkownika)

~/.bash_login (dla bieżącego użytkownika)

~/.profile (dla bieżącego użytkownika)

Możesz również użyć /etc/environment do Ustawienia stałej zmiennej środowiskowej PATH, ale nie obsługuje ona rozszerzenia zmiennej.

Pobrano z: http://www.sysadmit.com/2016/06/linux-anadir-ruta-al-path.html

 4
Author: Delucaramos,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-14 18:58:12

Pliki, do których dodajesz polecenie export, zależą od tego, czy jesteś w trybie logowania, czy nie.

Jeśli jesteś w trybie logowania, pliki, których szukasz to /etc /bash lub/etc / bash.bashrc

Jeśli jesteś w trybie bez logowania, szukasz pliku /.profil lub dla plików w katalogu/.profile.d

Plików wymienionych powyżej, jeśli Gdzie są zmienne systemowe.

 3
Author: Dikinha,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-05 13:35:33

Zues77 ma rację. Operacja nie powiedziała "Jak mogę się przez to przebić". OP chciał wiedzieć jak na stałe dołączyć do $PATH:

sudo nano /etc/profile

Tutaj jest ustawiony dla wszystkiego i jest najlepszym miejscem, aby zmienić go dla wszystkich rzeczy wymagających $PATH

 3
Author: Joe D,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-25 02:26:23

Moja odpowiedź dotyczy założenia go-lang na Ubuntu linux/amd64.Miałem ten sam problem z ustawianiem ścieżki zmiennych środowiskowych (GOPATH i GOBIN), tracąc ją przy wyjściu z terminala i przebudowując za każdym razem przy użyciu source <file_name>.Błąd polegał na umieszczeniu ścieżki (GOPATH i GOBIN) w folderze ~/.bash_profile. Po zmarnowaniu kilku dobrych godzin odkryłem, że rozwiązaniem było umieszczenie GOPATH i GOBIN w~/.bash_rc pliku w sposób:

export GOPATH=$HOME/go
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOPATH:$GOBIN

I robiąc to, instalacja go działała dobrze i tam nie było strat na drodze.

Edycja 1: Powodem, dla którego ten problem może być związany jest to, że ustawienia dla powłok bez logowania, takich jak Terminal ubuntu lub gnome-terminal, w którym uruchamiamy kod go, są pobierane z pliku ~./bash_rc, A ustawienia dla powłok logowania są pobierane z pliku ~/.bash_profile i z pliku ~/.profile, Jeśli plik ~/.bash_profile jest nieosiągalny.

 3
Author: Abhiroj Panwar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-04 21:38:21

Permanentnie dodaj zmienną ścieżki

Globalny:

echo "export PATH=$PATH:/new/path/variable" >> /etc/profile

Local (tylko dla użytkownika):

echo "export PATH=$PATH:/new/path/variable" >> ~/.profile

For global restart. Dla lokalnego relogin.

Przykład

Przed:

$ cat /etc/profile 

#!/bin/sh

export PATH=/usr/bin:/usr/sbin:/bin:/sbin

Po:

$ cat /etc/profile 

#!/bin/sh

export PATH=/usr/bin:/usr/sbin:/bin:/sbin
export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/new/path/variable

Możesz też edytować profil:

$ cat /etc/profile 

#!/bin/sh

export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/new/path/variable

Another way (thanks gniourf_gniourf):

echo 'PATH=$PATH:/new/path/variable' >> /etc/profile

Nie powinieneś używać podwójnych cudzysłowów! echo " eksport PATH = $PATH: / new/path / variable'... A tak przy okazji, słowo kluczowe export jest bardzo prawdopodobne bezużyteczne, ponieważ zmienna PATH jest bardzo prawdopodobne już oznaczone jako eksportowane. - gniourf_gniourf

 2
Author: user3439968,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-14 18:19:11

Dodaj do /etc/profile.d skrypt katalogu [name_of_script].sh z linią: export PATH=$PATH:/dir. Każdy skrypt w folderze /etc/profile.d jest automatycznie uruchamiany przez /etc/profile przy logowaniu.

 2
Author: Iurii,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-10 12:12:15

Najlepszy prosty sposób jest następujący wiersz:
PATH="<directory you want to include>:$PATH"
w Twoim .plik bashrc w katalogu domowym.
nie zostanie zresetowany, nawet jeśli zamkniesz terminal lub zrestartujesz komputer. Its permanent

 1
Author: Edward Torvalds,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-04 16:38:30

Myślę, że najbardziej elegancki sposób to:

1.dodaj to w ~./ bashrc plik

if [ -d "new-path" ]; then
  PATH=$PATH:new-path
fi

2.źródło ~/.bashrc

(Ubuntu)

 1
Author: Gimcuan Hui,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-17 02:50:27

Jednym ze sposobów na dodanie stałej ścieżki, która mi się sprawdziła, jest: cd / etc / profile.d dotyk custom.sh vi custom.sh export PATH=$PATH: / path zgodnie z Twoim ustawieniem/ zrestartuj komputer i tutaj idziemy ścieżka będzie tam na stałe zdrowie.

 0
Author: user6393373,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-28 03:19:04

Dla dystrybucji Debiana, musisz:

    - edit ~/.bashrc  e.g: vim ~/.bashrc 
    - add export PATH=$PATH:/path/to/dir
    - then restart your computer. Be aware that if you edit ~/.bashrc  as root, your environment variable you added will work only for root
 0
Author: onlyme,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-27 21:18:00

Można go bezpośrednio dodać za pomocą następującego polecenia:

Echo 'export PATH=$PATH: / new / directory'>>~/.zshrc źródło~/.zshrc

 -3
Author: Anoop Nagabhushan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-11 11:31:39