cp 오류 메시지는 Ubuntu 12.04(?) 및 Fedora 24에서 다른 참조를 사용합니다.

cp 오류 메시지는 Ubuntu 12.04(?) 및 Fedora 24에서 다른 참조를 사용합니다.

F24에서 개발 중인데 테스트에 통과했지만 Travis CI에서 시도하면 실패합니다. AFAIK, 그들은 (Travis CI) Ubuntu 12.04 VM을 사용합니다. 테스트에서는 실행 출력을 이전에 수집된 "황금" 출력과 비교하고 차이가 있으면 실패로 표시합니다.

cp이 특별한 경우에는 존재하지 않는 파일에 대해 명령을 호출하면 오류 메시지가 생성되기 때문에 차이가 발생 하지만 오류 메시지는 두 시스템 간에 약간 다릅니다. Fedora 24에서는 다음을 얻습니다.

$ cp foo bar
cp: cannot stat 'foo': No such file or directory

Ubuntu 12.04 VM(Travis CI 환경을 시뮬레이션하도록 설정됨)에서 다음을 얻습니다.

$ cp foo bar
cp: cannot stat `foo': No such file or directory

F24 출력의 작은따옴표 대신 Ubuntu 출력의 백틱을 확인하세요.

시도해 보았지만 export LC_ALL=C어떤 출력에도 아무런 효과가 없습니다. F24에는 coreutils 버전 8.25가 있습니다(ls 출력에 악명 높은 참조 파일 이름 변경이 포함되어 있지만 내 문제와 관련이 없다고 생각합니다). 우분투 12.04에는 버전 8.13이 있습니다.

내 질문:

1) 이것은 coreutils 8.13과 8.25 간의 변경 사항입니까? 아니면 Fedora와 Ubuntu가 coreutil을 다르게 컴파일합니까?

2) 최신 Ubuntu 버전에서는 이 오류 메시지(및 기타 오류 메시지)에 백틱을 사용합니까?

3) 오류 메시지에 사용된 따옴표를 설정할 수 있는 방법이 있나요? 어느 시스템에서요?

4) "gold" 출력과 비교하기 전에 명령 출력을 수정하고 모든 백틱을 작은따옴표로 변경할 수 있습니다. 더 나은 접근 방식에 대한 제안이 있습니까?

편집: Travis CI 환경에서 최신 버전의 우분투를 실행할 수 있다는 말을 들었습니다( "dist: trusty" 추가 .travis.yml). 이 버전(16.04)은 en_US.UTF-8 환경에서 오류 메시지의 따옴표를 열고 닫는 데 유니코드 작은따옴표(코드 포인트 #x2018)를 사용합니다. C 로케일에서는 ASCII 아포스트로피를 사용합니다. 제 목적에는 충분합니다.

답변1

[이 정보를 추가하기 위해 질문을 편집했지만 끝내기 위해 답변으로 추가했습니다. 12.04에서 백틱을 사용하는 이유는 여전히 확실하지 않지만 최신 버전이 사용 가능해지면 문제가 해결되지 않는 것 같습니다. ]

Travis CI 환경에서 최신 버전의 우분투를 실행할 수 있다는 말을 들었습니다("dist: trusty" 추가 .travis.yml). 이 버전(16.04)은 en_US.UTF-8 환경에서 오류 메시지의 따옴표를 열고 닫는 데 유니코드 작은따옴표(코드 포인트 #x2018)를 사용합니다. C 로케일에서는 ASCII 아포스트로피를 사용합니다. 제 목적에는 충분합니다.

관련 정보