배쉬 5의 새로운 기능

배쉬 5의 새로운 기능

나는 관련 없는 것들을 찾기 위해 공식 bash 저장소(보통은 하지 않는 일)를 검색하고 있었는데, bash 5가 이미 베타 버전이라는 것을 알게 되었습니다. bash 5의 새로운 기능이 궁금하지만 정보를 찾을 수 없습니다. Bash 버전 4.4와 5 사이의 변경 사항을 요약할 수 있나요?

답변1

버전 4.4와 5.0(2019-01-07에 출시됨) 사이의 변경 사항은 bash소스 배포 파일에서 확인할 수 있습니다.NEWSbash

여기에 대한 링크가 있습니다(여기에 나열하기에는 변경 사항이 너무 많습니다).

답변2

당신이 나와 같고 전체 변경 내역보다는 헤드라인 기능을 찾고 있다면,이 게시물유지관리자 Chet Ramey가 이에 대해 논의했습니다. 재미있는 부분은 다음과 같습니다.

이번 릴리스에서는 bash-4.4의 몇 가지 뛰어난 버그가 수정되었으며 몇 가지 새로운 기능이 도입되었습니다. 가장 중요한 버그 수정은 nameref 변수가 구문 분석되는 방법과 퍼즈 테스트를 통해 발견된 범위를 벗어난 잠재적인 메모리 버그의 수에 대한 점검입니다. Posix 표준 해석을 준수하기 위해 토큰화가 수행되지 않는 다양한 상황에서 $@ 및 $* 확장에 대한 많은 변경이 이루어졌으며 Posix 적합성의 특수 사례를 해결하기 위해 기타 변경이 이루어졌습니다.

가장 주목할만한 새로운 기능은 BASH_ARGV0, EPOCHSECONDS 및 EPOCHREALTIME과 같은 몇 가지 새로운 셸 변수입니다. "history" 내장 함수는 일정 범위의 기록 항목을 제거하고 부정적인 인수를 기록 목록 끝의 오프셋으로 해석합니다. 지역 변수가 이전 범위에서 동일한 이름을 가진 변수의 값을 상속하도록 허용하는 옵션이 있습니다. 활성화되면 쉘이 연관 배열 첨자를 한 번만 확장하려고 시도하는 새로운 쉘 옵션이 있습니다(산술 표현식에서 이를 사용할 때 문제가 됩니다). 이제 'globasciiranges' 셸 옵션이 기본적으로 활성화되어 있으며 구성 시 기본적으로 꺼짐으로 설정할 수 있습니다.

bash-4.4와 bash-5.0 사이에는 호환되지 않는 변경 사항이 있습니다. 호환성 문제를 최소화하려고 노력했지만 nameref 변수가 해결되는 방식이 변경되면 일부 nameref 사용이 다르게 동작하게 됩니다. 기본적으로 확장 디버깅 모드가 활성화된 경우 셸은 시작 시 BASH_ARGC 및 BASH_ARGV만 설정합니다. 이는 실수이며 무조건 설정되며 스크립트에 많은 수의 인수가 전달될 때 성능 문제가 발생할 수 있습니다.

더 많은 정보가 필요하면 다음 두 문서도 참조하세요.

  • 정보: 자세한 내용 (Kusalananda의 답변에도 있음)
  • 다양성: 가장 자세하게

답변3

"history" 내장 함수는 일정 범위의 기록 항목을 제거하고 부정적인 인수를 기록 목록 끝의 오프셋으로 해석합니다.

범위 제거의 예:

history -d 123-130

또는 마지막 10개를 제거하세요.

history -d -10--1

에서 발췌Bash 5 매뉴얼 페이지:

'역사'

옵션이 제공되는 경우 다음과 같은 의미를 갖습니다.

'-d OFFSET' OFFSET 위치의 기록 항목을 삭제합니다. OFFSET이 양수이면 이력을 표시할 때 표시되는 값을 지정해야 합니다. OFFSET이 음수이면 마지막 기록 위치보다 1 큰 값을 기준으로 해석되므로 음수 인덱스는 현재 "history -d" 명령을 참조하는 인덱스 "-1"을 사용하여 기록 끝에서 거꾸로 계산됩니다.

'-d START-END' START와 END(포함) 위치 사이의 기록 항목을 삭제합니다. START 및 END에 대한 양수 및 음수 값은 위에서 설명한 대로 해석됩니다.

내 관련 답변을 참조하십시오.일련의 bash 기록 레코드 삭제

관련 정보