Bash 5의 새로운 기능


29

나는 관계없는 것을 위해 공식 bash 저장소 (보통 이것을하지는 않는다)를 겪었지만 bash 5가 이미 베타 버전이라는 것을 알았습니다. bash 5의 새로운 기능에 대해 궁금했지만 정보를 찾을 수 없었습니다. Bash 4.4와 5 버전 사이의 변경 사항을 요약 할 수 있습니까?


6
그것은 바로 거기에 CHANGES파일을 git.savannah.gnu.org/cgit/bash.git/tree/...
muru

답변:


21

bash릴리스 4.4와 5.0 (2019-01-07 릴리스) 사이 의 변경 사항은 소스 배포 의 NEWS파일에서 찾을 수 있습니다 bash.

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


짧은보기는 용어를 보여줍니다 loadable builtins. 하는가 bash가 설정 한 새로운 표준에 따라 ksh93를 통해 향상된 내장 명령을 찾을 PATH대신에 항상 우선 순위를주는?
schily

@schily bash4.4 이상 에서는를 사용 BASH_LOADABLES_PATH하여로드합니다 enable -f builtin-name.
Kusalananda

글쎄, 이것은 명령이로드 될 때 적용되는 것 같습니다. 그 과거의 시간은 어떻습니까? 명령을 enable다시 구현하는 것처럼 보이지만 모든 내장 명령에 경로를 연결하는 기능이 누락되어 있습니다.이 명령 은 일반적으로 사전 정의되어 모든 buiiltins에 대해 세밀하게 제어 할 수 있습니다. ksh93builtinksh93/usr/ast/bin/<name>
schily

@ Kusalananda 어떻게 새로운 bash 5.0을 얻을 수 있습니까
Ankur Loriya

@AnkurLoriya Unix 배포자가 패키지로 배송 할 때까지 기다리거나 소스에서 직접 컴파일합니다. 소스 및 설치 지침은 GNU Bash 페이지 에서 볼 수 있습니다 .
Kusalananda

14

나와 같이 전체 변경 내역 아닌 헤드 라인 기능을 찾고 있다면 관리자 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의 답변에도 있음)
  • 변경 사항 : 대부분의 세부 사항

5

`history '내장은 히스토리 항목의 범위를 제거하고 히스토리 목록의 끝에서 오프셋으로 부정적인 인수를 이해합니다.

범위 삭제에 대한 예 :

history -d 123-130

또는 마지막 10을 삭제하십시오.

history -d -10--1

Bash 5 Man Page 에서 발췌 :

'역사'

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

'-d OFFSET'OFFSET 위치에서 히스토리 항목을 삭제합니다. OFFSET이 양수이면 기록이 표시 될 때 표시되는대로 지정해야합니다. OFFSET이 음수 인 경우 마지막 기록 위치보다 1이 큰 것으로 해석되므로 음수 인덱스는 기록의 끝부터 카운트 백되며 '-1'의 색인은 현재 'history -d'명령을 나타냅니다.

'-d START-END'START와 END 위치 사이의 히스토리 항목을 포함하여 삭제하십시오. START 및 END의 양수 및 음수 값은 위에서 설명한대로 해석됩니다.

내 관련 답변보기 : bash 기록 범위 삭제

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