PATH'a bir dizin nasıl eklenir?


731

$PATHUbuntu'da bir dizini nasıl eklerim ve değişiklikleri kalıcı hale getiririm?


2
help.ubuntu.com/community/EnvironmentVariables Bilmeniz gereken her şey var. Buradaki girdilerin çoğunun yanlış olduğunu veya en azından yöntemin önerilmediğini öğrendim. Bu, ortam değişkeninizi, yaptığınız nedene bağlı olarak nerede değiştireceğinizi ve her şeyi mahvetmeden tam olarak nasıl yapacağınızı (yukarıda belirtilen kötü tavsiyelerin bazılarını takip ettiğim gibi) anlamanızı sağlayan harika bir bilgidir. Çok uzun ve tüm balıklar için teşekkürler!
Otobüs42

Yanıtlar:


456

$ PATH ayarlamak için ~ / .profile komutunu kullanmak

Ayarlanan bir yol .bash_profilesadece bir bash giriş kabuğuna ( bash -l) ayarlanır . Yolunuza koyarsanız, .profilemasaüstü oturumunuzun tamamı için geçerli olacaktır. Bu, metasitenin bile kullanacağı anlamına gelir.

Örneğin ~/.profile:

if [ -d "$HOME/bin" ] ; then
  PATH="$PATH:$HOME/bin"
fi

BTT, bir sürecin PATH değişkenini ortamına bakarak kontrol edebilirsiniz /proc/[pid]/environ([pid] ile sayıyı değiştirin ps axf). Örneğin kullanımgrep -z "^PATH" /proc/[pid]/environ

Not:

bashGiriş kabuğu ayrıştırmak olmadığı için .profileya eğer .bash_profileya .bash_loginyoktur. Kimden man bash:

~ / .bash_profile, ~ / .bash_login ve ~ / .profile öğelerini bu sırada arar ve var olan ve okunabilen ilk komutları okur ve yürütür.

Bkz aşağıda cevapları hakkında bilgi almak için .pam_environment, ya da .bashrcinteraktif olmayan giriş kabukları için veya içine bir script koyarak tüm kullanıcılar için küresel değeri /etc/profile.d/veya kullanım /etc/X11/Xsession.d/ekran yöneticileri oturumu etkileyecek.


5
Harika, işe yaradı. Bunu yaparsam, bin direkini otomatik olarak nereye ekleyeceğini gördüm, böylece komut dosyaları yerine onu kullandım. TY.
justingrif

5
Xbunutu'da .profile çalıştırılamıyor, bu yüzden .bashrc içine koydum ve çalışıyor.
tekumara

13
Bu dokümantasyon çok iyi bir şekilde yapılıyor: Çevre değişkeni ile ilgili resmi belgeler . Okumayı düşünün (bunun, ortam değişkenine değer eklemek için kuralların son sürümüyle güncellendiğini söylememek).
Michele,

3
Nerede .profile yolu ekleriz ??
Vineet Kaushik

3
Hala fazladan yolumun nereye ekleneceği hakkında hiçbir fikrim yok. Android SDK'yı yoluma PATH="$HOME/bin:$PATH"eklemeliyim ... Yani ekledim mi?
Jamie Hutber,

303

Edit .bashrcev dizininde ve aşağıdaki satırı ekleyin:

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

.bashrcDeğişikliklerin geçerli olması için oturum açmanız / oturumu kapatmanız / oturum açmanız (veya terminali yeniden başlatmanız) gerekir. Kaynak bulmak için .bashrc, sadece yazın

$ source ~/.bashrc

3
"Kaynaklarınızı" nasıl kullanıyorsunuz .bashrc? "Terminali yeniden başlat" nasıl?
izomorfizmalar

3
Kısaca, basitçe '. .bashrc '
Ophidian 12:11

1
Ana dizininizde olduğunu varsayıyordum. o zaman düzenlemek istediğiniz .bashrc olduğu için.
Ophidian

21
.bashrcortam değişkenlerini ayarlamak için doğru yer değil. İçeri girmeli .profileya da gitmeli .pam_environment. Bkz mywiki.wooledge.org/DotFiles
geirha

4
@LaoTzu . .bashrcdeğil .bashrc:) veya source .bashrcbu konuda
Znarkus 21:12

120

Tüm kullanıcılara uygulanan kalıcı, sistem genelinde ortam değişkenlerini tanımlamak için önerilen yer şuradadır :

/etc/environment

(varsayılanın PATHtanımlandığı yerdir )

Bu masaüstü veya konsolda, GNOME terminalinde veya TTY'de çalışacak, yağmur veya parlayacak;)

  • Düzenlemek için Alt+ tuşlarına basın F2ve şunu yazın:

    gksudo gedit /etc/environment
    

    (veya sudoen sevdiğiniz metin düzenleyicide kullanarak dosyayı açın )

Değişiklikleri yapmak için, koş . /etc/environment. Bu dosya sadece basit bir betik olduğundan, çalışacak ve yeni yolu PATHçevre değişkenine atayacaktır . Run env dosyasını kontrol etmek ve PATHlistedeki değeri görmek için .

İlgili:


6
ve sonra değişikliklerin yürürlüğe girmesi için yeniden başlatmanız gerekiyor ...
Lee

2
Bu tam ihtiyacım olan şeydi. Bir serseri vm imgesi serseri aracılığıyla ve yola düğüm ve npm eklemek için gerekliydi.
Austin Pray,

7
Yürütülen değişikliklerde değişiklik yapmak. / etc / environment (evet, nokta, boşluk ve / etc / ortam). Bu dosya sadece basit bir betik olduğundan, çalışacak ve yeni yolu PATH ortam değişkenine atayacaktır. Run env dosyasını kontrol etmek ve listedeki PATH değerini görmek için.
WindRider

1
Ben çalıştırmak için gerekli source /etc/environmentdeğişiklikleri yeniden
JohnnyAW

@JohnnyAW: Kaynak ilk noktaya eşdeğerdir, örneğin en.wikipedia.org/wiki/Source_(command) bakın .
Roland Sarrazin

58

Bence Ubuntu'daki kanonik yol şudur:

  • altında yeni bir dosya oluştur /etc/profile.d/

    sudo vi /etc/profile.d/SCRIPT_NAME.sh
    
  • orada ekle:

    export PATH="YOUR_PATH_WITHOUT_TRAILING_SLASH:$PATH"
    
  • ve yürütmesine izin ver

    sudo chmod a+x /etc/profile.d/SCRIPT_NAME.sh
    

20
Özel yolunuzu başlangıç ​​yerine PATH'ın sonuna eklemek genellikle daha güvenlidir. Bu, sistem komutlarını yanlışlıkla programlarınızla (veya bir başkasının kötü niyetli programlarıyla) değiştirmekten kaçınır. Bu aynı zamanda, sisteminizde başka biri çalıştığında (veya size tavsiyelerde bulunursa) ve "değiştirdiğiniz" komutlardan beklenmeyen sonuçlar aldığında çok fazla karışıklığı önler.
Joe,

47

GUI ile daha konforlu olan yeni başlayanlar için (benim gibi):

  1. $HOMEKlasörünü aç .
  2. GörünümGizli Dosyaları Göster seçeneğine gidin veya Ctrl+ tuşuna basın H.
  3. Sağ tıklayın .profileve Metin Düzenleyiciyle Aç seçeneğine tıklayın .
  4. Aşağıya doğru kaydırın ve ekleyin PATH="$PATH:/my/path/foo".
  5. Kayıt etmek.
  6. Değişiklikleri uygulamak için oturumu kapatıp tekrar oturum açın (Ubuntu'nun gerçekten yüklenmesine izin verin .profile).

4
: .Profile dosyasını düzenleme anymore.You hala görmek .pam_environment dosyayı düzenlemek için bu yöntemi kullanabilirsiniz tavsiye edilmez help.ubuntu.com/community/EnvironmentVariables
PulsarBlow

@PulsarBlow! : Ben tam fark olsa fayda ne gerçekten emin değilim ... Bu, ilgili bölüme doğrudan URL help.ubuntu.com/community/...
dain

1
Bu cevap, tüm yolları geçersiz kıldığından sistemimin giriş yapmamasına neden oldu. Ubuntu Kullanımı 16.04.
Frisbetarian

1
Eklemek emin olmalıyız @Frisbetarian $PATH:mevcut YOLU tanımını içeren bit
dain

@dain: Yorumunuz hayatımı kurtardı!
Py-ser,

46

Yalnızca belirli kullanıcılar tarafından kullanılabilen kalıcı ortam değişkenleri için. Ubuntu resmi belgelerini tavsiye ederim.

https://help.ubuntu.com/community/EnvironmentVariables

Yukarıdaki belgelere bakıldığında, Android SDK yol araçlarımı şu şekilde ayarlarım :

  1. ~/.pam_environmentAna dizinde dosya oluşturma .
  2. içeriği PATH DEFAULT=${PATH}:~/android-sdk-linux/tools.
  3. Özel kullanıcı yolu, yolları kolonla (:) ayırarak eklenebilir .
  4. bu, tekrar oturum açmayı gerektirir; bu, oturumu kapatıp masaüstü ortamına geri dönmeniz gerektiği anlamına gelir.

1
Bu en iyi cevap.
Paulo Coghi

26

~/.bashrcDosyanın içine bu satırı koyun .

Bir terminal açtığınızda kaynaklı olur

DÜZENLEME : (Eğer vurduğunda dahil tüm kabuklar için geçerli olacak daha genel bir ayar için aşağıdaki yorum dayanarak Alt- F2Unity), senin için satırı ekleyin ~/.profiledosyası. Muhtemelen her ikisini de yapmamalısınız, çünkü PATHbir terminal açarsanız ortamınız için yol iki kez eklenecektir .


1
Aslında yolu $HOME/.profilekişisel ayarlar /etc/profileiçin veya tüm kullanıcılar için ayarladığınızı sanıyordum . Ama sadece bash için gerekliyse, her ikisinin de işe yarayacağını düşünüyorum.
Marty Fried,

1
Ayarladıysanız ~/.bashrc, yalnızca açtığınız terminallerde kullanılabilir. Örneğin, Alt + F2'ye basıp o dizinden bir komut çalıştırmayı denerseniz, onu bulamaz. Eğer bunu ayarlarsanız ~/.profileveya ~/.pam_environmentgnome oturumu (veya hangisi DE kullandığınız) bunu devralır. PATH eklenmesi ~/.bashrcde, bash'ı etkileşimli bir etkileşimli bash kabuğundan etkileşimli olarak açarsanız / çalıştırırsanız, birkaç kez ekleneceği dezavantajı vardır.
geirha

2
Bir süredir bu konuya hiç bakmadım, bu yüzden bir arama yaptım ve görünüşe göre yolu belirlemek için en az 95 farklı yol var, çoğu burada tartışılıyor . Hangisinin en iyi olduğunu asla bulamadım. Bence ~/.profilekişisel yollar için doğru; Ubuntu'nun ~/bindizini eklediği yer burasıdır . Ve itiraf ediyorum, birkaç şekilde abarttığımı itiraf ediyorum - sadece biraz.
Marty Fried,

1
@MartyFried, evet, botu freenode üzerinde #bash alıntı yapmak: «İnternetteki bash scriptlerinin, kodların, öğreticilerin ve rehberlerin ezici çoğunluğu saçma. Sturgeon iyimserdi. »Bash sorunu için google'ı kullanarak, iyi bir tane bulamadan önce çoğu zaman yarı işe yarayan çözümler bulacaksınız. Oh ve ben ~/.profilede bu davayla giderdim .
geirha

1
@geirha - Genel olarak internetteki rehberlerin çoğunun büyük olasılıkla, özellikle de farklı dağıtımlardan, hatta aynı sürümün farklı sürümlerinden farklı şeyler yaptığından, her şeyden mahrum olduğunu kabul ediyorum. Genelde neyin işe yarayacağına bağlı değildir, ancak çoğu insan neyin işe yaradığını, neyin işe yaradığını, mutlaka neyin doğru olduğunu, hatta her zaman neyin işe yarayacağını anlamaz. Hangi yolun hangisinin doğru olduğunu bulmaya çalışıyorum, çünkü bir şeyi birden fazla yapmaktan nefret ediyorum - ama her zaman kolay değil. :)
Marty Fried,

15

Geniş bunu sistemini ayarlamak için satır eklemek export PATH=/path/you're/adding:$PATHsonuna /etc/profile.

Yalnızca oturum açan kullanıcının dizinini eklemek için aynı satırı da ekleyin ~/.bash_profile.


14

.Bashrc 'ye eklemek işe yarayacaktır, ancak yol değişkenlerinizi ayarlamanın daha geleneksel yolunun aşağıdaki satırları ekleyerek .bash_profile olduğunu düşünüyorum.

PATH=$PATH:/my/path/foo
export PATH

Bu konuya göre Ubuntu'nun davranışı RedHat ve klonlardan biraz farklı görünüyor.


1
.Bash_profile yok, oluşturmalı mıyım?
justingrif

7
Eğer varsa .bashrc, onun .bashrcyerine yapıştırın . Ubuntu'daki GUI terminalleri giriş kabukları değildir, bu nedenle .bash_profileçalıştırılmayacaktır.

1
Ben bir GUI kabuğu çalıştırmıyorum. Ancak yukarıdaki iş parçacığından bakıldığında .bashrc sadece iyi çalışacak gibi görünüyor.
justingrif

2
Her ikisi de kabuğunuz bir giriş kabuğu ise işe yarar. Ancak Ubuntu makinelerimden birinde .bash_profile yaklaşımını yeni denedim ve gnome oturumumu yeniden başlattıktan sonra bile .bash_profile kaynak göstermedi. Bu yüzden bunu .bashrc içine koymanın muhtemelen Ubuntu ile devam etmenin bir yolu olduğunu söyleyebilirim.
3dinfluence

3
@justingrif Hayır, gerek yok .bash_profile. Bash bir tane bulamazsa .bash_profile(etkileşimli olarak oturum açtığınızda), bunun .profileyerine onu arar ve kullanır. Varsayılan olarak, a .profileve .bashrcUbuntu'da olacaksınız . Ve .profilebiz pam_env dikkat edilmediğinde ortam değişkenleri ayarlamak için doğru yerdir.
geirha

10

Terminalde, cdiçinthe_directory_you_want_to_add_in_the_path

echo "export PATH=$(pwd):\${PATH}" >> ~/.bashrc

Bu benim fikrim değildi. Burada bu blogda yol dışa aktarmak için bu yolu buldum .


8
sudo vi /etc/profile.d/SCRIPT_NAME.sh

oraya ekle

export PATH=YOUR_PATH_WITHOUT_TRAILING_SLASH:$PATH

2
sudo nano /etc/profile.d/SCRIPT_NAME.shyeni başlayanlar için daha kolaydır.
izomorfizmalar

1
Yeni başlayanlar gksu gedit /etc/profile.d/SCRIPT_NAME.shiçin daha kolaydır.
fouric

6

BASH komut dosyalarımın klasörünü "kurduğumda" $HOME/bin, Ubuntu'nun son sürümlerinde çoğu .profile dosyasındaki bir klasör için yapılan testin modelini izlerim. Benzeyen bir test ayarladım

if [ -d "/usr/scripts" ]; then
   PATH="/usr/scripts:$PATH"
fi

Zamanın sadece% 100'ünü kullanıyor ve bir GUI metin editöründe hızlı bir "Tümünü Değiştir" ile değiştirmeme izin vermiyor, klasörüme /scriptsyakın bir yere gitmeye karar vermeliyim $HOME. Bunu 6 Ubuntu kurulumunda yapmadım, fakat “her zaman yarın” var. S

BZT


6

Senin düzenlemek için önerilen yol PATHdan /etc/environmentdosyası

Örnek çıktı /etc/environment:

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

Örneğin, yeni yolunu eklemek için /home/username/mydir

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/username/mydir"

Ardından, bilgisayarınızı yeniden başlatın.


Sistem genelinde çevre değişkenleri

Sistemi bir bütün olarak etkileyen ortam değişken ayarları için uygun bir dosya (sadece belirli bir kullanıcı yerine) / etc / ortam. Bir alternatif, /etc/profile.d dizinindeki amaç için bir dosya oluşturmaktır.

/ Etc / çevre

Bu dosya özellikle sistem çapında ortam değişken ayarları içindir. Bir komut dosyası değil, her satırda bir tane olmak üzere atama ifadelerinden oluşur.

Not: Değişken genişleme / etc / ortamda çalışmaz.

Daha fazla bilgi burada bulunabilir: EnvironmentVariables


1
En düşük cevap henüz en doğru olanı. Bu dosya, genellikle yolu ile otomatik doldurulur bin Ubuntu.
NotoriousPyro

4

Terminalinizi açın gedit .profile, aşağıdakini yazın ve yerleştirin:

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

 #the following line add Bin where you dont have a Bin folder on your $HOME
    PATH="$PATH:/home/mongo/Documents/mongodb-linux-i686-2.2.2/bin"

Kapatın ve terminali açın, çalışıyor olmalı.


2

Bunu, ~/.bashrckullandığınız ne olursa olsun, rc (veya yukarıda belirtilen ~/.profile) kullandığınız VE ~/.xsessionrcböylece X (dış kabuk) da çalışacaktır.


1

Sistem komut dosyaları bunu kullanmasa bile $HOME/bin, birinin PATH ortam değişkenine yol (örn. ) Eklemek istediği durumlarda kullanması gerekir.

PATH="${PATH:+${PATH}:}$HOME/bin"

eklemek için (yerine PATH="$PATH:$HOME/bin") ve

PATH="$HOME/bin${PATH:+:${PATH}}"

hazırlamak için (yerine PATH="$HOME/bin:$PATH").

Bu $PATH, başlangıçta boşken istenmeyen etkilere yol açabilen sahte ön / arka kolondan kaçınır .

Bakınız örneğin https://unix.stackexchange.com/questions/162891/append-to-path-like-variable-without-creating- leading- colon- if- unset


-1

Ubuntu ~/.bashrciçin aşağıdaki satırı düzenleyin ve ekleyin.

. ~/.bash_profile

Sonra .bash_profile dosyanızı istediğiniz gibi düzenleyin .....


1
Reddedildi, çünkü " .bash_profileihtiyaç duyduğunuz şekilde düzenlemenizi" açıklamıyordunuz . Tam olarak ne yapmam gerekiyor .bash_profile?
izomorfizmalar

4
Bu yanlış yol. .profileveya .bash_profilekaynak olmalıdır .bashrc. Diğer yoldan değil.
geirha
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.