/ bin / sh: error mengimpor definisi fungsi untuk `some-function '


13

Saya mengalami kesalahan ini ketika memperbarui bash untuk masalah keamanan 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'

Jawaban:


16

[diedit setelah komentar pertama dari: @chepner - terima kasih!]

/ bin / bash memungkinkan tanda hubung dalam nama fungsi, / bin / sh (Bourne shell) tidak. Di sini, "beberapa fungsi" yang menyinggung telah diekspor oleh bash, dan bash bernama yum yang disebut / bin / sh yang melaporkan kesalahan di atas.

memperbaiki: mengganti nama fungsi shell untuk tidak memiliki tanda hubung

man bash mengatakan bahwa pengidentifikasi bash dapat terdiri: "hanya karakter alfanumerik dan garis bawah"

Kesalahan / bin / sh jauh lebih eksplisit:

some-function () { :; }

sh: `some-function ': bukan pengidentifikasi yang valid


Perhatikan bahwa dalam bash, tanda hubung dibolehkan dalam nama fungsi, hanya saja tidak dalam nama parameter.
chepner

@chepner Bagaimana dengan garis bawah? Apakah garis bawah diperbolehkan dalam nama fungsi dan nama parameter?
BH2017

Pada sistem saya, bash 4 memungkinkan nama fungsi memiliki tanda hubung tetapi bash 3 tidak - Saya berasumsi pada sistem OP / bin / sh adalah bash 3, dan / bin / bash adalah bash 4
Mark Fox

2

Ubah / Perbaiki nama fungsi dari "foo-bar"menjadi"foo_bar"

Ini adalah konvensi penamaan yang oleh bash baik-baik saja, sedangkan sh tidak.

Ganti "-" (tanda hubung / putus / minus) dengan "_" (garis bawah), dan kesalahan diperbaiki, dan kode bekerja pada bash dan sh

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.