ฉันพบข้อผิดพลาดนี้เมื่ออัปเดต bash สำหรับปัญหาด้านความปลอดภัย CVE-2014-6271:
# 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'
ฉันพบข้อผิดพลาดนี้เมื่ออัปเดต bash สำหรับปัญหาด้านความปลอดภัย CVE-2014-6271:
# 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'
คำตอบ:
[แก้ไขหลังจากความคิดเห็นที่ 1 จาก: @chepner - ขอบคุณ!]
/ bin / bash อนุญาตให้ใช้เครื่องหมายขีดกลางในชื่อฟังก์ชัน / bin / sh (เชลล์เป้าหมาย) ไม่ได้ ที่นี่การกระทำผิด "บางฟังก์ชั่น" ถูกส่งออกโดย bash และ bash เรียกว่า yum ซึ่งเรียกว่า / bin / sh ซึ่งรายงานข้อผิดพลาดด้านบน
แก้ไข: เปลี่ยนชื่อฟังก์ชั่นเปลือกที่จะไม่มียัติภังค์
man bash กล่าวว่าตัวระบุ bash อาจประกอบด้วย: "เฉพาะตัวอักษรและตัวเลขและขีดล่าง"
ข้อผิดพลาด / bin / sh ชัดเจนมากขึ้น:
some-function () { :; }
sh: `some-function ': ไม่ใช่ตัวระบุที่ถูกต้อง
เปลี่ยน / แก้ไขชื่อฟังก์ชันจาก"foo-bar"
เป็น"foo_bar"
มันเป็นแบบแผนการตั้งชื่อที่bashก็โอเคด้วยเพราะที่shไม่ใช่
แทนที่ "-" (ขีดกลาง / ขีดกลาง / ลบ) ด้วย "_" (ขีดล่าง) และข้อผิดพลาดได้รับการแก้ไขและรหัสทำงานบนทั้งbashและsh
bash
อนุญาตให้ใช้เครื่องหมายยัติภังค์ในชื่อฟังก์ชันไม่ใช่ในชื่อพารามิเตอร์