PATH'de neden bu kadar çok program yaşıyor?


10

En azından masaüstü Linux hakkında beni şaşırtan bir şey, PATH'imde hemen hemen her şeyin olması. Her şeyden öte, gnome-karakter-haritası ve glchess gibi şeyler de dahil olmak üzere her masaüstü uygulamasını kastediyorum. Bunlardan bahsetmek için herhangi bir komut satırı arabirimi yok, bu yüzden bunları düzenli olarak bir terminalden başlatacağım bir durum düşünemiyorum - ve bu olası durumda, tam olarak yazmaları gerekmeden rahatsızlık vermeyi hayal edemiyorum. yolları. Sadece karışıklık gibi görünüyor, ama belki de iyi bir sebep var.

Peki, neden yok bunun? Performans veya sürdürülebilirlik üzerinde kayda değer bir etkisi var mı?

Yanıtlar:


14

Bir kullanıcının çalıştırmak isteyebileceği tüm komutlar PATH içindedir. Bunun için. Bunun anlamı komutları içerir sen doğrudan çalıştırmak, diğer insanların doğrudan işletilen komutlar ve diğer komutlar tarafından çağırılan çünkü ya da diğer insanların da dolaylı olarak yayınlanmasını komutları. Bu, bir terminalden çalıştırılan komutlarla sınırlı değildir: GUI'den çalıştırılan komutlar da komut arama yolunda aranır (yine bunun için kullanılır).

Tam yolu yazmanız çok kötü olurdu: tam yolun ne olduğunu bulmanız gerekir! İçinde /usr/bin(işletim sistemiyle birlikte gönderilen çoğu programı içeren) veya /usr/local/bin(yönetici tarafından manuel olarak yüklenen programları ve bazılarında temel işletim sisteminin bir parçası olmayan programları içeren ) izlemeniz gerekir. unix varyantları) veya sisteme özgü başka bir dizinde veya kullanıcının ana dizininin herhangi bir yerinde olabilir.

“Performans veya sürdürülebilirlik üzerindeki etkisi” hakkında cevap vermek zor çünkü onu neyle karşılaştırdığınızı söylemiyorsunuz. Her yere tam yolu yazmak zorunda kalıyorsanız, bu sürdürülebilirlik için bir kabus: bir programı yeniden konumlandırdıysanız veya işletim sistemiyle birlikte gelen veya bir sistem yöneticisi tarafından yüklenen sürümden daha yeni bir sürüm yüklemek istiyorsanız, bu tam yolu her yerde değiştirmek zorundasınız. Birkaç dizin içinde isme bakmanın performans etkisi göz ardı edilebilir.

Windows ile karşılaştırıyorsanız, daha da kötüsü: bazı programlar sadece yürütülebilir dosyayı değil, aynı zamanda PATH'a her türlü bok ekler ve PATHyine de tüm programları içermeyen mil uzunluğunda bir değişkenle sonuçlanırsınız , çünkü birçok program yüklediğinizde kendilerini sistem PATH'ına eklemez.


Bu oldukça rasyonel mantık gibi görünüyor. Açıklama için teşekkürler! Bir programı değiştirmenin biraz anlamı var. Bunu hiç düşünmemiştim :) Bu konuda bana çarpıcı olan kısım, programlama hakkında düşündüğümde küçük ve açıklayıcı ad alanlarına sahip olmak isterken, burada her şey aynı küresel ad alanında (ve yaptığımız zaman) * / bin) gibi oldukça sıradışı yerlerde tam yollara bakın. Sanırım onlar oldukça farklı şeyler.
Dylan McCall

4

PATH değişkeni, dizin yollarının bir listesini içerir. Kullanıcı tam yolu sağlamadan bir komut yazdığında, bu listenin komuta götüren bir yol içerip içermediği kontrol edilir. Doğasında terminal veya komut satırı hakkında özel bir şey yok.

Üstelik Masaüstü Linux hakkında da özel bir şey yok. XP sistemimdeki PATH, muhtemelen Windows ikili dosyalarının çoğunu kapsayan % SystemRoot% \ system32;% SystemRoot%;% SystemRoot% \ System32 \ Wbem içeriyor.

PATH dizinleri belirtilen sırada aranır ve bir eşleşme bulunur bulunmaz durur. Sistem dizinleri genellikle başlangıçta onlara en yüksek önceliği verir. Kullanıcılar, sonunda özel arama yolları eklemelidir.

Performans gelince: Çoğu modern kabuk PATH içeriğini önbelleğe alır, böylece kullanıcılar her komut girdiğinde diski taramak zorunda kalmazlar.


Windows PATH, Windows ile birlikte gelen ikili dosyaların çoğunu kapsar, ancak yüklediğiniz sıradan uygulamalar normalde PATH'de bulunmaz. (Bir komut satırı bileşenine sahip uygulamalar kendilerini
PATH'e

Havalı, her zaman düzeni ve önemini düşündüm. Temel bir kurala ne dersiniz? Ben (neredeyse) her kombinasyonuna sahip usr, local, binve sbin(benim kullanıcı ev dizini hariç).
Emanuel Berg
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.