globstar : bash 4.X에서도 macOS에서 유효하지 않은 쉘 옵션 이름


21

새로운 globstar옵션은을 요구합니다 bash 4. 그래서 .. bash우리는 어느쪽에 있습니까?

 $bash --version
GNU bash, version 4.4.12(1)-release (x86_64-apple-darwin16.3.0)
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

우리가 시도하자 globstar:

13:39:28/forecast-fresh $shopt -s globstar
-bash: shopt: globstar: invalid shell option name
13:39:32/forecast-fresh $

macOS에서이를 지원할 수있는 방법이 있습니까?

답변:


18

입력 shopt하면 Apple의 bash에 대한 globstar가 포함되지 않은 모든 bash 옵션 목록이 표시됩니다. 이 옵션을 지원하지 않고 bash가 컴파일되었을 수 있습니다.

globstar install brew 및 brew 's bash로 bash 실행 파일을 얻으려면 :

$ brew install bash
$ chsh -s /usr/local/bin/bash
$ sudo bash -c 'echo /usr/local/bin/bash >> /etc/shells'
$ ln -s /usr/local/bin/bash /usr/local/bin/bash-terminal-app

그런 다음 터미널에서 열린 기본 쉘을 / usr / local / bin / bash-terminal-app로 변경하고 '이 탭을 닫으시겠습니까?'를 억제하십시오. 창과 탭을 닫을 때 프롬프트가 표시되면 제외 목록에 'bash'를 추가하십시오.

새로운 옵션 목록은 다음과 같습니다.

$ shopt
autocd          off
cdable_vars     off
cdspell         off
checkhash       off
checkjobs       off
checkwinsize    on
cmdhist         on
compat31        off
compat32        off
compat40        off
compat41        off
compat42        off
compat43        off
complete_fullquote  on
direxpand       off
dirspell        off
dotglob         off
execfail        off
expand_aliases  on
extdebug        off
extglob         off
extquote        on
failglob        off
force_fignore   on
globasciiranges off
globstar        off
gnu_errfmt      off
histappend      off
histreedit      off
histverify      off
hostcomplete    on
huponexit       off
inherit_errexit off
interactive_comments    on
lastpipe        off
lithist         off
login_shell     on
mailwarn        off
no_empty_cmd_completion off
nocaseglob      off
nocasematch     off
nullglob        off
progcomp        on
promptvars      on
restricted_shell    off
shift_verbose   off
sourcepath      on
xpg_echo        off

특정 상황에서 / usr / local / share /와 그 하위 폴더는 루트 (예 : smartmontools, nmap, 노드 등을 사용자 정의 설치 프로그램과 함께 설치 한 후)가 소유하며 일부 단계는 실패합니다. 내 의견 chown -R으로는 brew / bash를 설치 한 관리자에게 폴더에 저장됩니다 . macOS 및 brew의 거의 모든 바닐라 설치에서 / usr / local / share 및 / usr / local / share / locale은이 관리자가 소유합니다.


마지막 ln -s단계는 저에게 없어진 단계였습니다.
javadba

1
이것은 나를 위해 작동하지 않습니다. /usr/local/bin/bash에 의해 생성되지 않았습니다 brew. 또한 무엇 bash-terminal-app입니까?
glS

@klanomath Sierra 10.12.6 및 추출 1.5.2. 실행 파일은에 설치되어 /usr/local/Cellar/...있으며 보통 링크되어 /usr/local/bin있습니다. 그러나 어떤 이유로 든 bash예외 인 것 같습니다. brew doctor가능한 이유는 bash연결될 수없는 것으로 드러나지 만, 시도 brew link bash하면 symlink를 만들 수 없다는 것을 알 수 있습니다 /usr/local/share/locale/ca/LC_MESSAGES is not writable. 나는 확인하고 brew있었다 하지 홈 페이지에서 조언으로, 루트로 설치.
glS

/usr/local/share/locale/ca/LC_MESSAGES루트에 의해 실제로 쓰기 권한이 없으므로 루트가 소유하고 있지만 안전하게 액세스 할 수 있는지 확실하지 않습니다 chown. 이 파일은 루트가 소유해야합니까?
glS

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