Yolda "hangisi" olmadan bir dosya bulun?


12

Ben (bir şekilde) bir komut dosyası çalıştırmak mümkün:

$ assemble.sh file
... [output]

Ama whichbulamıyorum:

$ which assemble.sh
which: no assemble.sh in (/s/std/bin:/usr/afsws/bin:/opt/SUNWspro/bin:/usr/ccs/bin:/usr/ucb:/bin:/usr/bin:/usr/stat/bin:/usr/X11R6/bin:.
  1. Bu nasıl mümkün olabilir?
  2. Bu dosyanın nerede olduğunu nasıl bulabilirim?

Ben bash kullanıyorum.


Mi assemble.shgeçerli dizinde?
Keith

3
Muhtemelen aptalca bir soru, ama bu bir takma ad mı (yani komutu yazdığınızda assemble.sh ortaya çıkıyor alias mu?
James McLeod

@JamesMcLeod Büyük tahmin! Acme.sh ( github.com/Neilpang/acme.sh ) için benim durumumdu . Yüklemeden sonra acme.sh takma adı oluşturuldu ve PATH var olmamasına rağmen acme.sh'ın nasıl çağrıldığını merak ettim.
rlib

Yanıtlar:


17

Bu komutu kullanın: type assemble.sh

Çeşitli kabuklarda çalışır ve sadece ilk sonucu gösterir.


9
Ya da sadece type assemble.shtaşınabilir olan (ve sadece ilk eşleşmeyi type -agösterirken tüm eşleşmeleri göstermek için bir ksh / bash yapısıdır).
Gilles 'SO- kötü olmayı kes

6

Veya yolu böl ve bul - kullan ilk çözüm çözüm olmalı

find ${PATH//:/ } -maxdepth 1 -name assemble.sh -print -quit

type elbette daha kolaydır.


2
Bu oldukça faydalı. Ben alt bileşenlerine $ PATH bölünmüş ve her biri arama bilmiyordumfind
Ehtesh Choudhury


4

Bash kullanıyor olabilirsiniz, ancak whichçıktının sözdizimi, whichcsh ile yazılmış eski yöntemi kullandığınızı gösterir . Parantezler tarafından alıntılanan PATH görünür /opt/SUNWspro/binve PATH içindeki dizinler /usr/ccs/binsadece Solaris'te anlamlı olan girişlere sahiptir. Tutarlı: Solaris csh kullandı which.

Benim tahminim: bash için bir PATH ve csh için başka bir PATH var. Bu bir sistem sorunu olabilir. Hatırladığım gibi, Solaris sistem genelinde PATH ayarı için / etc / profile ve / etc / cshrc dosyalarını tutar. Bu iki başlatma dosyası, farklı kabuklar için farklı PATH değişkenleri ayarlayabilir. "Echo $ PATH" whichkomutunu bash altında yapın ve komutun PATH dizesi olarak yazdıklarıyla aynı olup olmadığını görün .


4
command -v assemble.sh

Bilgi

-v `` type '' yerleşikine benzer bir COMMAND açıklaması yazdır

PATHASSEMBLE=$(PATH=/usr/bin:/usr/local/opt/coreutils/libexec/gnubin command -v assemble.sh)
nhed

0

locate assemble.shDosyanın yerini bulmak için kullanabilirsiniz .


Hayır, adı assemble.shburada bulunan ve burada önemsiz olan tüm (dünya) okunabilir dosyaların konumunu gösterir .
Gilles 'SO- kötü olmayı bırak

Hiç alakasız değil. Bu şekilde adlandırılan birden fazla dosya olsa bile, ona istediği dosyayı locateda verebilirdi. assemble.shyaygın bir dosya adı değildir, bu yüzden dosyayı kolayca bulacaktır (OP'nin istediği budur).
nico

1
Sonuçları göstermeden updatedbönce yapmanız gerekmiyor locatemu?
glenn jackman 14:03

1
Genellikle updatedbgünlük olarak bir cron işi olarak çalıştırılır, ancak evet, dosya çok yeniyse bunu zorlamanız gerekebilir.
nico
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.