/ bin / sh: `` bazı işlev '' için işlev tanımını içe aktarma hatası


14

CVE-2014-6271 güvenlik sorunu için bash güncelleştirilirken bu hatayla karşılaştım:

# yum update bash
Running transaction (shutdown inhibited)
Updating   : bash-4.2.47-4.fc20.x86_64
/bin/sh: error importing function definition for `some-function'

Yanıtlar:


17

[1 yorumdan sonra düzenlendi: @chepner - teşekkürler!]

/ bin / bash işlev adlarındaki tirelere izin verir, / bin / sh (Bourne kabuğu) izin vermez. Burada, rahatsız edici "bazı işlev" bash tarafından dışa aktarılmış ve bash, yukarıdaki hatayı bildiren / bin / sh adlı yum olarak adlandırılmıştır.

düzeltme: kabuk işlevlerini kısa çizgilere sahip olmayacak şekilde yeniden adlandırın

man bash, bash tanımlayıcılarının şunları içerebileceğini söylüyor: "yalnızca alfasayısal karakterler ve alt çizgiler"

/ Bin / sh hatası çok daha belirgindir:

some-function () { :; }

sh: `some-function ': geçerli bir tanımlayıcı değil


bashİçinde, parametre adında değil, işlev adında tire kullanımına izin verildiğini unutmayın .
chepner

@ chepner Alt çizgi ne olacak? İşlev adında ve parametre adında alt çizgiye izin veriliyor mu?
BH2017

Benim sistemimde bash 4 fonksiyon isimlerinin tireye sahip olmasına izin verir ama bash 3 yapmaz - OP'nin sistemi / bin / sh'nin bash 3 olduğunu ve / bin / bash'ın bash 4 olduğunu düşünüyorum
Mark Fox

2

Değişim / dan işlev adı Fix "foo-bar"için"foo_bar"

O adlandırma kuralı olduğu bash nereye, ile Tamam sh değildir.

"-" (kısa çizgi / kısa çizgi / eksi) yerine "_" (alt çizgi) koyun, hata giderilir ve kod bash ve sh tuşlarında çalışı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.