Encontré este error al actualizar bash por el problema de seguridad 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'
[editado después del primer comentario de: @chepner - ¡gracias!]
/ bin / bash permite guiones en los nombres de funciones, / bin / sh (Bourne shell) no. Aquí, bash había exportado la "alguna función" ofensiva, y bash llamó a yum, que llamó a / bin / sh, que informó el error anterior.
solución: cambiar el nombre de las funciones de shell para que no tengan guiones
man bash dice que los identificadores de bash pueden consistir en "solo caracteres alfanuméricos y guiones bajos"
El error / bin / sh es mucho más explícito:
some-function () { :; }
sh: `alguna función ': no es un identificador válido
bash
, se permite un guión en el nombre de una función, pero no en el nombre de un parámetro.Cambiar / corregir el nombre de la función de
"foo-bar"
a"foo_bar"
Es la convención de nomenclatura con la que bash está bien, donde como sh no lo está.
Reemplace el "-" (guión / guión / menos) con "_" (guión bajo), y el error se arregla, y el código funciona tanto en bash como en sh
fuente