/ bin / sh :`some-function '에 대한 함수 정의 가져 오기 오류


14

CVE-2014-6271 보안 문제에 대한 bash를 업데이트 할 때이 오류가 발생했습니다.

# 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

[@chepner의 첫 번째 댓글 이후 수정 됨-감사합니다!]

/ bin / bash는 함수 이름에 하이픈을 허용하지만 / bin / sh (Bourne shell)는 하이픈을 사용할 수 없습니다. 여기서 문제가되는 "일부 기능"은 bash에 의해 내보내졌으며, bash는 yum이라는 / bin / sh라는 위의 오류를보고했습니다.

수정 : 하이픈이 없도록 쉘 함수 이름 바꾸기

man bash는 bash 식별자가 "영숫자 및 밑줄 만"으로 구성 될 수 있다고 말합니다.

/ bin / sh 오류는 훨씬 더 명확합니다.

some-function () { :; }

sh :`some-function ': 유효한 식별자가 아니다


에서 bash하이픈은 매개 변수 이름이 아닌 함수 이름에 사용할 수 있습니다.
chepner

@chepner 밑줄은 어떻습니까? 함수 이름과 매개 변수 이름에 밑줄이 허용됩니까?
BH2017

내 시스템에서 bash 4는 함수 이름에 하이픈을 사용할 수 있지만 bash 3 은하 지 않습니다 — OP의 시스템에서 / bin / sh는 bash 3이고 / bin / bash는 bash 4라고 가정합니다.
Mark Fox

2

변경 /에서 함수 이름을 수정 "foo-bar"하는"foo_bar"

bash 는 괜찮은 이름 지정 규칙 이며, sh 는 그렇지 않습니다.

"-"(하이픈 / 대시 / 빼기)를 "_"(밑줄)로 바꾸면 오류가 수정되고 코드는 bashsh 에서 작동합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.