SORU
26 HAZİRAN 2015, Cuma


Neden bu komut kabuk öldürür mü?

Güncelleme:Bu daha tekrarlanabilir olduğunu daha genel bir emirdir. Kabuklu deniz ürünleri daha genel bir düzeni olduğunu tespit etmiştir:

non-existingcommand & existingcommand &

örneğin,

xyz & echo &

Ayrıca, bir iş arkadaşınız bir ssh bağlantısı üzerinden denemek zorundaydım ve onun bağlantı komutu çalıştırdıktan sonra kapatıldı. Bu belirli bir terminal emülatörü ile sınırlı gibi görünmüyor.

Orijinal soru:

echo?a=1&b=2|3&c=4=

Davranış:

Komutu yürütmeden sonra, mevcut Gnome Terminal Hesabım uyarı olmadan kapanır.

Arka plan:

Curl komutu ile bir URL test ama teklif etmeyi unutmuş olduğumuz veya özel karakterler (dolayısıyla ve işaretler ve işaretleri eşittir) kaçış. Sözdizimi sorunları veya komut bulunamadı saçmalığı bekliyor, biz yerine bizim kabuk sadece istifa izledim. Biraz zaman komut davranışa neden olacak en az daraltarak geçirdik.

Ubuntu 14.10 geçerli üzerinde Gnome Terminal kullanıyoruz. Garip bir şekilde, davranış oturumdan eğer ben ayırmak bile byobu çalıştırıyorum başka bir kutu üzerinde mevcut değil. Ayrıca özellik listesi üzerinde olmaz. Ne yazık ki Ubuntu 14.10 geçerli aksi takdirde test için sınırlı değilim.

Aşağıdaki komutu da benim terminal öldürür ama . not: ^em>zaman sadece yarısı:

echo?a=1&b=2&c=3=

Ek testler:

Birisi arttıkça kullanmanızı öneririz...

guest-cvow8T@chortles:~$ bash -c 'echo?a=1&b=2|4&c=3='
bash: echo?a=1: command not found
guest-cvow8T@chortles:~$ bash: 4: command not found

Çıkış yok.

CEVAP
26 HAZİRAN 2015, Cuma


OEL bir VM üzerinde bir Ubuntu VM ama bu sorunu yeniden. Fark, command-not-found yüklendi ve 12* *python komut dosyası sağlar paket Ubuntu oldu. Bu komut kabuk çıkmak için sorumlu.

/etc/bash.bashrc bir fonksiyonudur /usr/lib/command-not-found yürüten command-not-found_handle. Bu komutları çalıştırmak için çalıştığınızda, bu nedenle, terminal çıkar. /usr/lib/command-not-found, çağrı yorumladı zaman artık sorun tekrarlanabilir.

/etc/bash.bashrc: benim

function command_not_found_handle {
     #check because c-n-f could've been removed in meantime 
     if [ -x /usr/lib/command-not-found ]; then 
          /usr/bin/python /usr/lib/command-not-found -- "$1"
          return $?
     elif [ -x /usr/share/command-not-founf/command-not-found ]; then
          /usr/bin/python /usr/share/command-not-founf/command-not-found -- "$1"
          return $?
     else
          printf "%s:command not found\n" "$1"
          return 127
     fi
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Easy Learn Tutorial

    Easy Learn T

    10 Kasım 2012
  • Lancome USA

    Lancome USA

    30 HAZİRAN 2009
  • thelonelyisland

    thelonelyisl

    23 Aralık 2005