127 $ dan dönüş kodu?


Yanıtlar:


428

127 değeri /bin/sh, verilen komut PATHsistem değişkeninizde bulunamadığında ve yerleşik bir kabuk komutu olmadığında döndürülür . Başka bir deyişle, sistem komutunuzu anlamıyor, çünkü aramaya çalıştığınız ikili dosyayı nerede bulacağını bilmiyor.


55
Bu, bir bash betiğinin "+ x" modu yoksa, ancak gerçekten varsa da olur.
MatthewKremer

3
which [program]İşletim sisteminin hangi ikili dosyayı kullandığını görmek için kullanmayı deneyebilirsiniz . Boş kalırsa, bir sonraki adım yürütme bitini ve PATH'ı kontrol etmektir.
four43

10
@ cr125rider, whichözellikle doğru değildir - takma adlar, kabuk işlevleri, PATH arama notu veya kabuk durumuna dahili diğer faktörler hakkında bilgi sahibi değildir. Kullanmak çok daha iyi type, tüm bunları bilen bir kabuk yerleşik.
Charles Duffy

5
Bu bana Windows satır beslemeleri olan bir dosyada da oldu. Satır sonlarının unix formatına düzeltilmesi sorunu çözdü
Mitkins

4
@MatthewKremer: Aslında, 126( içeriğinden bağımsız olarak) yürütülebilir olmayan bir dosyayı çağırmaya çalıştığımda Permission denieddeğil, ( ) 127alıyorum; benzer şekilde, bir dizini yürütme girişimi de 126( is a directory) ile sonuçlanır .
mklement0

58

Genellikle şu anlama gelir:

127 - komut bulunamadı

ancak komutun bulunduğu anlamına gelebilir ,
ancak komut için gerekli olan bir kitaplık bulunmaz .


14

127 - command not found

örnek: $ caat Hata mesajı

bash:

caat: komut bulunamadı

şimdi kullanarak kontrol ediyorsun echo $?


10

Bir kabuk kuralı, başarılı bir yürütülebilir dosyanın 0 değeriyle çıkması gerektiğidir. Ayrıca bash man sayfasının $ PIPESTATUS ve EXIT STATUS bölümüne bakınız:

   For  the shell’s purposes, a command which exits with a zero exit status has succeeded.  An exit status
   of zero indicates success.  A non-zero exit status indicates failure.  When a command terminates  on  a
   fatal signal N, bash uses the value of 128+N as the exit status.
   If  a command is not found, the child process created to execute it returns a status of 127.  If a com-
   mand is found but is not executable, the return status is 126.

   If a command fails because of an error during expansion or redirection, the exit status is greater than
   zero.

   Shell  builtin  commands  return  a  status of 0 (true) if successful, and non-zero (false) if an error
   occurs while they execute.  All builtins return an exit status of 2 to indicate incorrect usage.

   Bash itself returns the exit status of the last command executed, unless  a  syntax  error  occurs,  in
   which case it exits with a non-zero value.  See also the exit builtin command below.

8

Özel bir anlamı yoktur, son çıkış işleminin 127 çıkış durumu ile yapılması dışında.

Bununla birlikte, bash (bash'ı kabuk olarak kullandığınızı varsayarak), yürütmeye çalıştığınız komutun yürütülemediğini (yani bulunamadığını) söylemek için de kullanılır. Ne yazık ki, süreç 127. durumdan çıkmışsa veya bulunamazsa, derhal çıkartılamaz.

EDIT:
Konsol çıktı dışında hemen çıkartılamaz, ancak bu yığın taşması, bu yüzden bunu bir komut dosyasında yaptığınızı varsayalım.


2

Bu hata bazen aldatıcıdır. Dosyalar gerçekten mevcut olsa bile dosyanın bulunmadığını söylüyor. Bunun nedeni, kullandığınız düzenleyicinin neden olabileceği dosyalarda bulunan geçersiz okunamayan özel karakterler olabilir. Bu bağlantı bu gibi durumlarda size yardımcı olabilir.

-bash: ./my_script: / bin / bash ^ M: bozuk yorumlayıcı: Böyle bir dosya veya dizin yok

Bu sorunun olup olmadığını öğrenmenin en iyi yolu, tüm dosyaya basitçe bir yankı ifadesi yerleştirmek ve aynı hatanın atıldığını doğrulamaktır.


1

Bir komut dosyası dili kullanarak bir program çalıştırmaya çalışıyorsanız, komut dosyası dilinin tam yolunu ve yürütülecek dosyayı eklemeniz gerekebilir . Örneğin:

exec('/usr/local/bin/node /usr/local/lib/node_modules/uglifycss/uglifycss in.css > out.css');

Teşekkürler, bu benim için çalıştı. Bu yüzden hangi gs yaptım ve sonra benim komut dosyası çıktı yolunu kullandım. Çalıştı ..
Juan

0

IBM anabilgisayarında JCL, çağrılan unix komut dosyasının adının sonunda fazladan bazı karakterler veya numaralar içeriyorsa, bu tür bir hata verebilir.

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.