Unix PATH değişkeni nedir ve nasıl eklerim?


11

Birçok programlama dersi, kullanıcılardan kendilerine bir şeyler eklemelerini ister, PATHancak ne olduğunu açıklamaz. PATHKomut satırında yeni olan kullanıcılara açıklayan var olan kaynaklar çok iyi değil.

  • Unix PATHdeğişkeni nedir?

  • Sadece bir program indirdim, sonra terminalde bir komut çalıştırmayı denedim ve aldım command not found. Bunun ne ile ilgisi var PATH?

  • PATHBu komutla bir şey ekledim ve sonra işler çalıştı:

    export PATH=/path/to/some/bin:$PATH
    

    ... ama command not foundbilgisayarımı bir sonraki başlatışımda tekrar aldım . PATHTerminali her açışımda nasıl kalmasını sağlayabilirim ?

  • Git gibi bir programın gccbilgisayarımda yüklü olup olmadığını belirlemenin en iyi yolu nedir ?


3
SO'daki cevapların çoğunu okudum ve bu soruların her birini bir aceminin anlayabileceği şekilde cevaplayan bir cevap bulamadım. Yeni komut satırı kullanıcılarını bağlayabileceğim bir şey istiyorum. Bunu topluluk wiki'si olarak eklemek ve önemli bir lütuf eklemek umudumdu.
Kevin Burke

4
Bahse girerim bu soru için Google'da arama yaparsam 50 sonuç bulabilirim. Neden yapamıyorsun?
trojanfoe

2
Ve bu bağlantılardan hiçbiri burada olmaya uygun bir soru için SO'ya işaret etmiyorsa, buraya eklenmelidir. Biz istiyoruz Google programlama soruları için gittiği olmak SO.

Kevin'in bu soruyu sorma motivasyonları için lütfen bu MSO gönderisine bakın . Büyük olasılıkla, bu bilginin nasıl yararlı olduğunu açıklığa kavuşturmak için bir düzenleme yapacaktır .
jmort253

1
@ jmort253: Hızlı bir şekilde yapmaya başlamalı. 4/5 oy ver. Kapatmayacağım çünkü soruyu düzenlemek istediğini biliyorum, ama çabuk yapsa iyi olur.
Madara'nın Hayaleti

Yanıtlar:


17

UNIX yolu, çalıştırmaya çalıştığınız programları arayacağınız dizinlerin listesi olan bir ortam değişkenidir. Gibi şeyleri çalıştırmak için tam yol adını kullanmaktan kaçınmanıza izin verir /bin/ls(örneğin /binyolu koyarak ).

Örneğin, bir yol şunlardan oluşabilir:

/bin:/usr/bin:/usr/sbin

ve bu, komutu xyzzyyazdığınızda, bulduğu ilk dosyayı geçerli listeden çalıştırmaya çalışacağı anlamına gelir :

/bin/xyzzy
/usr/bin/xyzzy
/usr/sbin/xyzzy

(Bu olabilir o zeki davranıyor eğer olmayan yürütülebilir dosyaları atlayın).

Yola aşağıdaki gibi bir komutla şeyler ekleyebilirsiniz:

set PATH=/directory/to/add:$PATH:/low/priority/path

hangi yerlerde /directory/to/addyol arama listesinin başında ve /low/priority/pathsonunda.

Ancak, bu genellikle yalnızca geçerli kabuk için değişir . Her kabukta değişiklik yapmak istiyorsanız, o satırı başlangıç ​​dosyalarınızdan birine ( $HOME/.profileveya gibi) eklemelisiniz /etc/profile. Kullanılacak doğru dosya kabuğunuzun kendisine ve başlangıç ​​dosyalarını nasıl ayarladığınıza bağlıdır. Nereye gitmesi gerektiğini söylemek her zaman kolay değildir, ancak kurallar genellikle hangi sayfada kullandığınız kabuk için açıklanır.

Yolda genellikle aşağıdakilerden biriyle bir komut bulabilirsiniz :

which cmd
whence cmd

cmdyürütülebilir dosyayı bulmak için . Örneğin, Debian sistemimde aşağıdaki transkripti alıyorum:

pax> which ls
/bin/ls

pax> which firefox
/usr/bin/firefox

pax> which xyzzy

pax> 

1
Bu soru stackoverflow'a ait mi?
trojanfoe

@trojanfoe, kabukla ilgili herhangi bir soru kadar evet, ben de öyle düşünürdüm. Bu ise aynı zamanda bir programlama dili.

Cevabı :ayırıcı olarak kullanmak için değiştirdim , çünkü * nix'te kullanıldı. Windows kullanır ;(muhtemelen :zaten bir anlamı vardır C:).
Joachim Sauer

Aslında @Joachim, belirli bir kabuğun (UNIX'in kendisinden ziyade) belirli bir dizin ayırıcısı olduğunu söylemek muhtemelen daha doğrudur, ancak kafamın üstünde kullandığım herkes için haklısınız. Düzeltme için teşekkürler, şerefe.

@paxdiablo: evet, bunu düşündüm ama ben de kullanmayan herhangi bir unix kabuğu düşünemiyorum :(Java'da, örneğin path.separatorher zaman :* nix üzerinde).
Joachim Sauer

5

Nedir?

PATH ortam değişkeni, bir komut girdiğinizde kabuğunuzun aradığı, kolonla ayrılmış dizinlerin listesidir.

Nasıl ayarlanır?

PATH=$PATH:/your/directory
export PATH

Terminali her açışımda PATH'de kalmasını nasıl sağlayabilirim?

Önceki iki satırı içeri koyun ~/.bash_profile( bashTerminal için kullanıyorsanız ).


3

PATH, unix benzeri sistemler için bir ortam değişkenidir.

yolu ayarla:

export PATH=$PATH:<your path>

ayarlanmamış yol:

unset $PATH

yolu kalıcı olarak ayarla

ana klasörünüzde, Görünüm -> Gizli Dosyaları Göster .... kalemini etkinleştirin. kalem .bash_profile dosyası, PATH satırını dışa aktarmadan önce bu satırı ekleyin .....

PATH=$PATH:<yourpath>

çıkış ve tekrar giriş ...... onun çalışıp çalışmadığını kontrol ... iyi! İşe yaramalı.....


1
Downvote için özür dilerim, ancak bu kötü biçimlendirilmiş ve çevrilmiş. Aşırı kalın, aşırı elips ("...") kullanımından kaçının ve tam cümleler yazın. Bu, gelecekte bu tür düşüşlerden kaçınmaya yardımcı olacaktır.
Joachim Sauer

1
@Joachim Sauer cevabı neden düzenlemiyorsun? Neden indirmeyi tercih ediyorsunuz?

1
@MikroDel: çünkü bu soruya daha iyi, daha kaliteli cevaplar var ve aşağı oylama daha az çaba gerektiriyor. Eğer tek cevap bu olsaydı, muhtemelen onu düzenlerdim. Ayrıca: genellikle eğlenceli olmasalar da, aşağı oylar meşru bir araçtır (evet, her sorunun / cevabın yanında yukarı ve aşağı oklar vardır).
Joachim Sauer

1
bu yorumu düzenle veya

@MikroDel: Yani bir aşağı oyun ardındaki mantığı açıklamak kullanıcıya yardımcı olmaz mı? Bence akıl yürütme konusunda oldukça net ve kaliteyi artırma konusunda pratik ipuçları verdim. Israrınızın tek yaptığı şey, aşağı oylarımı açıklama isteğimi azaltmasıdır (ve profilimde gördüğünüz gibi aşırı derecede küçümsemiyorum).
Joachim Sauer
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.