-
poetry 1.2.0의 bash completion 오류와 대응 방법Programmer/Programming 2022. 9. 6. 12:09
poetry version 1.2.0 업그레이드 이후, 터미널을 열면 아래와 같은 오류가 뜬다.
line 40: syntax error near unexpected token `clear' line 40: ` (cache clear)'
로그인쉘이 기동할 때, poetry의 bash의 자동 확장 기능 스크립트를 실행하면서 발생하는 오류이다.
문제의 원인부터 말하자면, /usr/local/Cellar/poetry/<version>/etc/bash_completion.d/poetry의 bash 자동 확장 스크립트의 case 패턴에 공백이 들어갔기 때문이다. 해결 방법은 이 공백을 처리해주면 된다. 두가지 방법을 제기할 수 있는데, 하나는 패턴을 쌍따옴표(”)로 감싸는 방법과
case "$com" in # ... skip ... ("cache clear") opts="${opts} --all" ;; # ... skip ... esac
다른 하나는 공백 앞에 역슬래쉬(\)를 붙이는 것이다.
case "$com" in # ... skip ... (cache\ clear) opts="${opts} --all" ;; # ... skip ... esac
일일이 수정하는 수고를 덜기 위해서 두번째 방법 즉, 공백에 역슬래쉬를 추가한 방법을 적용한 파일을 첨부한다.
위 파일로 교체하거나 인내심을 가지고 커뮤니티에서 개선 버전을 릴리즈를 기다리면 자연스럽게 해소가 된다.
곁가지로 덧붙이자면, case 문 안에 괄호로 시작하는 패턴 구문(list)이 생소할 것이다. 보통은 list)와 같이 구문 끝에만 괄호가 붙는다. 시작 괄호는 구문 해석 과정에서 무시되는 선택적인 키워드이다. 누군가 설명하기로는 괄호를 매칭해서 편집기의 구문 해석을 돕기 위해서 도입된 것이라고 한다.
이번 오류를 접하면서, 일부(?) 오픈소스 커뮤니티니의 부실한 검증이 문제점이 될 수 있겠다는 생각이 든다. 이번 오류는 쉽게 재현되는 종류의 것인데도 릴리즈 되었다는 것에서 안타깝다. 이에 대해서는 생각을 정리해서 다음번에 공개해야겠다.
'Programmer > Programming' 카테고리의 다른 글
언어별 형식 출력 함수 비교 (0) 2021.07.09 함수적 프로그래밍 작성하기 (0) 2019.12.03 러스트(Rust)를 위한 SyntaxHighlighter 3.0 플러그인 개선 (0) 2019.02.14 러스트와 다른 언어의 멀티라인 처리 비교 (0) 2019.02.12 러스트에서 문자열을 효과적으로 연결하기 (1) 2019.02.08 댓글