/ bin / sh: ข้อผิดพลาดการนำเข้าคำจำกัดความฟังก์ชันสำหรับ 'some-function'


14

ฉันพบข้อผิดพลาดนี้เมื่ออัปเดต 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'

คำตอบ:


17

[แก้ไขหลังจากความคิดเห็นที่ 1 จาก: @chepner - ขอบคุณ!]

/ bin / bash อนุญาตให้ใช้เครื่องหมายขีดกลางในชื่อฟังก์ชัน / bin / sh (เชลล์เป้าหมาย) ไม่ได้ ที่นี่การกระทำผิด "บางฟังก์ชั่น" ถูกส่งออกโดย bash และ bash เรียกว่า yum ซึ่งเรียกว่า / bin / sh ซึ่งรายงานข้อผิดพลาดด้านบน

แก้ไข: เปลี่ยนชื่อฟังก์ชั่นเปลือกที่จะไม่มียัติภังค์

man bash กล่าวว่าตัวระบุ bash อาจประกอบด้วย: "เฉพาะตัวอักษรและตัวเลขและขีดล่าง"

ข้อผิดพลาด / bin / sh ชัดเจนมากขึ้น:

some-function () { :; }

sh: `some-function ': ไม่ใช่ตัวระบุที่ถูกต้อง


โปรดทราบว่าในbashอนุญาตให้ใช้เครื่องหมายยัติภังค์ในชื่อฟังก์ชันไม่ใช่ในชื่อพารามิเตอร์
chepner

@chepner สิ่งที่เกี่ยวกับขีดล่าง? ขีดเส้นใต้อนุญาตในชื่อฟังก์ชันและชื่อพารามิเตอร์หรือไม่
BH2017

ในระบบของฉันทุบตี 4 ช่วยให้ชื่อฟังก์ชั่นมียัติภังค์แต่ทุบตี 3 ไม่ได้ - ฉันถือว่าระบบของ / bin / sh คือทุบตี 3 และ / bin / ทุบตีทุบตี 4
มาร์คฟ็อกซ์

2

เปลี่ยน / แก้ไขชื่อฟังก์ชันจาก"foo-bar"เป็น"foo_bar"

มันเป็นแบบแผนการตั้งชื่อที่bashก็โอเคด้วยเพราะที่shไม่ใช่

แทนที่ "-" (ขีดกลาง / ขีดกลาง / ลบ) ด้วย "_" (ขีดล่าง) และข้อผิดพลาดได้รับการแก้ไขและรหัสทำงานบนทั้งbashและsh

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.