Linux'ta dosyaadı ve ./filename arasındaki fark nedir


Yanıtlar:


18

Veri dosyaları için bir fark yaratmaz - her iki ifade de geçerli dizininizdeki veri dosyasına başvurur. (Örneğin cat filenameve cat ./filenameanlamsal olarak aynıdır.)

Söz konusu dosya adı bir yürütülebilir dosyaya işaret ediyorsa farklı bir hikaye , yani komut satırına yazdığınız ilk (hatta yalnızca) şeydir. ./filenamegeçerli dizininizdeki yürütülebilir dosyayı arayacak ve başka hiçbir yerde bulunmayacaktır. filenamediğer yandan, ortam değişkenini değerlendirir ve burada depolanan her dizinde (geçerli dizininizi içerebilir veya içermeyebilir) PATHarar filename.

./filename(veya başka herhangi bir /path/to/filename), PATH'nizde bulunan ilk dosyayı değil, belirli bir yürütülebilir dosyayı yürütmek istediğinizde tercih edilir .


6

Eğer bir program filenameçalıştırıyorsanız, sizin için bulunan ilk programı çalıştırmanızı $PATH, ikincisi ise geçerli dizinde çalıştırmayı söylüyor.

Bu dosya adını bir programda olduğu gibi bir argüman olarak kullanıyorsanız do_something filenameveya do_something ./filenameaynı şey anlamına gelir.


5

Komut uygulamasından bahsediyorsun, değil mi?

PATHNoktalı virgülle ayrılmış bazı sistem dizinlerini içeren bir ortam değişkeni vardır. Eğer yazdığınızda commandonu bulursa amacıyla bu dizinlerde sistem görünüyor onlar adında çalıştırılabilir bir dosyayı bulmak için belirtilen <komut>, onu çalıştırmayı dener. PATH'inizi echo $PATHbash üzerinden görebilirsiniz . Örneğin:

$ echo $ PATH
/ sbin: / bin: / usr / sbin: / usr / bin: / usr / oyunlar: / usr / local / sbin: / usr / local / bin: / home / ivanatora / bin: / usr / local / kde4 / bin: / usr / local / kde4 / bin

Eğer yazdığınızda ./filenamesize tam yolu belirterek vardır: Geçerli dizini. Geçerli dizinin nadiren $ PATH değerinde olduğunu görebilirsiniz (güvenlik nedeniyle). Bu nedenle, geçerli dizinden bir dosya yürütmek istiyorsanız, kullanın ./filename.

Bir dosyayı yoluna göre yürütmek için (özellikle $ PATH içinde değilse) şunları da yazabilirsiniz <path>/file:

/ Sbin / ifconfig



1

Hangi koşulları kullandığınıza bağlıdır.

Bir argüman olarak, örneğin "program dosya adı", o zaman programa bağlıdır, ancak genellikle aynıdırlar.

Bir program adı olarak, örneğin "dosyaadı argümanları", ardından "dosyaadı argümanları" ikiliyi bulmak için PATH'yi arar, "./filename argümanları" ise geçerli dizindeki programı kullanır. Bu tabii ki yararlıdır. PATH'de değil, ancak bunu olsa bile kullanmak yararlıdır. belki de daha önceki bir girişle eşleştiği için yolda.

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.