'Test' adlı çalıştırılabilir dosya $ PATH dilinde ancak çalışmaz


13

Ben $ HOME / bin bir dosya var (sormadan önce, evet, benim yolumdadır) denilen testhangi dosyayı tam yolu ile çalıştırdığınızda iyi çalıştırılabilir teyit denir . Ancak, bu şekilde çalışmadığımda gerçekten garip bir sorunla karşılaşıyorum. Sadece testterminalde koştuğumda, hiçbir şey yapmaz ve hemen geri döner. Bunun birkaç nedenden dolayı dosyayı bulma sorunu olmadığını biliyorum:

  1. Hata mesajı yok. Normalde dosya bulunamazsa veya yürütülemezse, bir mesaj yazdırılır.

  2. Çalıştırılması which testyine de doğru dosya yolunu döndürür.

  3. Muhtemelen en tuhafı - komut dosyası çalıştırıldığında iyi çalışıyor strace. straceNeler olup bittiğini anlayabildiğimi görmek için kullanmayı denedim ama koştuğumda strace0 sorunla beklendiği gibi çalıştı.



Yanıtlar:


45

testtalihsiz bir isim, koşullu testler için standart bir yardımcı programdır . (Aslında bu, aynı komut var in , sadece bakar sentaktik şey gibi, ama gerçekten sadece normal bir komuttur.)[if [ ... ]

testayrıca Bash'te yerleşiktir, bu yüzden koşmak testasla ikili dosyalarınızı yoldan aramaz.

bash$ help test | head
test: test [expr]
    Evaluate conditional expression.

    Exits with a status of 0 (true) or 1 (false) depending on
    the evaluation of EXPR.  Expressions may be unary or binary.  
    [...]

test argüman olmadan sadece 1 (false) döndürür.

Koşmak strace test, kabuk yerleşimini straceiçermez , çünkü herhangi bir yardımcı programın kendisini uygulamaz. Sadece içinde bulduklarını kullanır PATH. Muhtemelen içinde standart testvar /bin/testya da /usr/bin/test, eğer bu ilk olsaydı PATH, stracebunu çalıştırın.

Benim Bash, whichaynı zamanda harici bir komut, bu yüzden yerleşikler hakkında bir fikri yok. Öte yandan, komut kabuğu için yerleşik olduğunu ve bu gösterecekti .typetype testtest is a shell builtin

Ayrıca bakınız: Neden "hangisini" kullanmıyorsunuz? O zaman ne kullanılır?


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.