2010-05-19 23 views
82

Kabuğun üzerindeyken, kullanılabilecek tek komutların, PATH'de bazı dizinlerde bulunabilecekleri olduğunu biliyorum. Hatta benim PATH değişkeni (ve bu cevap verilebilir başka bir iyi soru) ne dirs görmek nasıl bilmiyorum, bilmek istiyorum:Kabuk - Bazı komutların dizini nasıl bulunur?

Ben kabuk ve yazmak gelmek:

$ lshw 

Bu komutun nerede olduğunu söyleyebilen kabuk hakkında bir komut öğrenmek istiyorum. Başka bir deyişle, bu "yürütülebilir dosya" nerede bulunur? gibi

şey:

$ location lshw 
/usr/bin 

herkes? Bunun gibi

cevap

106

Eğer Bash veya zsh kullanıyorsanız, bunu kullanın: Bu hedef bir yerleşik bir fonksiyon, bir takma veya harici çalıştırılabilir olup olmadığını gösterecektir

type -a lshw 

. İkincisi ise, PATH’unuzda göründüğü her yeri gösterecektir. Bash

bash$ type -a lshw 
lshw is /usr/bin/lshw 
bash$ type -a ls 
ls is aliased to `ls --color=auto' 
ls is /bin/ls 
bash$ zsh 
zsh% type -a which 
which is a shell builtin 
which is /usr/bin/which 

, fonksiyonları için type -a da fonksiyon tanımlama gösterir. Aynı şeyi yapmak için declare -f functionname'u kullanabilirsiniz (bunu, type -a içermediğinden, zsh için kullanmanız gerekir).

+0

Cevap veren herkese teşekkürler, ama bu cevap en heyecan verici oldu! Teşekkür ederim! Ben deli olduğumu düşünüyordum, çünkü (uzun zaman önce) bunu yapmak için bir yol tanımladım: 'update', ve bu 'apt-get update' yapıyor; apt-get dist-upgrade 'benim için. Ama şimdilik, bir yerde bir update.sh dosyası bulmaya çalışıyordum ve bulamadım. Bu yüzden bu soruyu başlattım. Ama şimdi, 'type -a update' kullanarak, bunun sadece evimde bulunan .bashrc adresinde tanımlanan bir takma ad olduğunu öğrendim. Gerçekten teşekkür ederim. –

+0

@Gabriel: 'Yer bul 'ile aşina değilseniz dosyaları bulmanıza yardımcı olabilir. Bir cron işten çalıştırılan 'updatedb' tarafından sürdürülen bir veritabanı kullanır. Bulgu, tüm dosya sisteminden ziyade bir veritabanını aradığından, “bul” dan çok daha hızlıdır (son çare olarak kullanılabilir). –

+0

Teşekkürler. Bu aracı inceleyeceğim ve updatedb'nin Ubuntu'nun cronjob çalışmasında nasıl programlandığını göreceğim. –

42

:

which lshw 
+4

Ayrıca hangi yolunuzda eşleşen tüm komutları görmek için lshw. – AlG

+0

Bunun sadece komutlarla ($ PATH üzerinde çalıştırılabilir), işlevlerde değil, çalıştığını düşünüyorum. –

5
~$ echo $PATH 
/home/jack/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games 
~$ whereis lshw 
lshw: /usr/bin/lshw /usr/share/man/man1/lshw.1.gz 
15

PATH bir ortam değişkendir ve yankı komutuyla görüntülenebilir:

echo $PATH 

Kolon karakteri 'ile ayrılmış yolları bir listesi : '

which komutu t Eğer bir komut çalıştırdığınızda arşın hangi dosya çalıştırılmaktadır:

which lshw 
bazen

ne olsun sembolik bağlantılara bağlantı yolu; Eğer gerçek çalıştırılabilir alıyorsa şunları readlink nerede kullanabileceğiniz bu bağlantıyı iz ve ona which çıktısını beslemek istiyorsanız:

readlink -f $(which lshw) 

-f parametre yinelemeli sembolik aşağıdaki tutmak için readlink talimatını verir. ,

$ which firefox 
/usr/bin/firefox 

$ readlink -f $(which firefox) 
/usr/lib/firefox-3.6.3/firefox.sh 
0

Korn kabuk, ksh, which komut daha taşınabilir yerleşik, diğer kabuk yerleşik ins, makro tanımlayan vb olduğunu whence sunmaktadır:

İşte benim makineden bir örnek ancak.

+1

ksh, 'whence -a', Bash'in türüne -a benzer. –

İlgili konular