/ bin / sh: erro ao importar a definição da função para `alguma função '


13

Encontrei este erro ao atualizar o bash para o problema de segurança 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'

Respostas:


16

[editado após o primeiro comentário de: @chepner - obrigado!]

/ bin / bash permite hífens nos nomes das funções, / bin / sh (Bourne shell) não. Aqui, a "alguma função" ofensiva foi exportada pelo bash, e o bash chamado yum, que chamou / bin / sh, que relatou o erro acima.

correção: renomear funções do shell para não ter hífens

O man bash diz que os identificadores do bash podem consistir: "apenas caracteres alfanuméricos e sublinhados"

O erro / bin / sh é muito mais explícito:

some-function () { :; }

sh: `some-function ': não é um identificador válido


Observe que em bash, um hífen é permitido em um nome de função, mas não em um nome de parâmetro.
chepner

@chepner Que tal um sublinhado? Um sublinhado é permitido em um nome de função e nome de parâmetro?
BH2017

Na minha festa de sistema 4 permite nomes de função para ter hífens , mas o bash 3 não faz - Presumo no OP sistema / bin / sh é o bash 3, e / bin / bash é o bash 4
Mark Fox

2

Alterar / corrigir o nome da função de "foo-bar"para"foo_bar"

É a convenção de nomenclatura com a qual o bash está bem, onde sh não está.

Substitua o "-" (hífen / traço / menos) por "_" (sublinhado), e o erro será corrigido e o código funcionará tanto no bash como no sh

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.