나는 관계없는 것을 위해 공식 bash 저장소 (보통 이것을하지는 않는다)를 겪었지만 bash 5가 이미 베타 버전이라는 것을 알았습니다. bash 5의 새로운 기능에 대해 궁금했지만 정보를 찾을 수 없었습니다. Bash 4.4와 5 버전 사이의 변경 사항을 요약 할 수 있습니까?
답변
bash
릴리스 4.4와 5.0 (2019-01-07 릴리스) 사이 의 변경 사항은 소스 배포 의 NEWS
파일에서 찾을 수 있습니다 bash
.
여기에 링크가 있습니다 (여기에 나열하기에는 변경 사항이 너무 많습니다).
답변
나와 같이 전체 변경 내역 이 아닌 헤드 라인 기능을 찾고 있다면 관리자 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 만 설정합니다. 무조건 설정되었으며 스크립트에 많은 인수가 전달 될 때 성능 문제를 일으킨 것에 대한 감독이었습니다.
그는 더 많은 것을 원할 경우이 두 파일을 참조합니다.
답변
`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 기록 범위 삭제