globalstar: tên tùy chọn shell không hợp lệ trên macOS ngay cả với bash 4.X


21

globstarTùy chọn mới yêu cầu bash 4. Vậy .. bashchúng ta đang ở đâu?

 $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>

Hãy để chúng tôi thử globstar:

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

Có cách nào để nhận hỗ trợ cho điều này trên macOS không?

Câu trả lời:


18

Việc nhập shoptsẽ giúp bạn có một danh sách với tất cả các tùy chọn bash không bao gồm globalstar cho bash của Apple. Có lẽ bash được biên dịch mà không hỗ trợ cho tùy chọn này.

Để có được một bash thực thi với globalstar cài đặt brew và brew's 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

Sau đó thay đổi trình vỏ mặc định được mở trong Terminal thành / usr / local / bin / bash-terminal-app và để chặn 'Bạn có muốn đóng tab này không?' nhắc nhở khi đóng cửa sổ và tab, thêm 'bash' vào danh sách loại trừ.

Danh sách tùy chọn mới là:

$ 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

Trong một số trường hợp nhất định / usr / local / share / và các thư mục con của nó được sở hữu bởi root (ví dụ: sau khi cài đặt smartmontools, nmap, nút, v.v. với trình cài đặt tùy chỉnh của chúng) và một số bước không thành công. Theo tôi, nó lưu vào chown -Rcác thư mục cho người dùng quản trị viên đã cài đặt brew / bash. Trong bản cài đặt macOS và brew gần như vanilla của tôi, / usr / local / share và / usr / local / share / locale thuộc sở hữu của người dùng quản trị viên này.


đó ln -slà bước còn thiếu đối với tôi
javadba

1
điều này không làm việc cho tôi. /usr/local/bin/bashđã không được tạo bởi brew. Ngoài ra, là bash-terminal-appgì?
glS

@klanomath Sierra 10.12.6 và ủ 1.5.2. Các tệp thực thi được cài đặt trong /usr/local/Cellar/...thường được liên kết trong /usr/local/bin. Đối với một số lý do mặc dù, bashdường như là một ngoại lệ. brew doctorcho thấy lý do có thể xảy ra là bashkhông thể liên kết được, nhưng nếu tôi thử brew link bashtôi nhận được rằng liên kết tượng trưng không thể được tạo bởi vì /usr/local/share/locale/ca/LC_MESSAGES is not writable. Tôi đã kiểm tra và brewđã không được cài đặt như là người chủ, như khuyến cáo trong trang chủ.
glS

/usr/local/share/locale/ca/LC_MESSAGESthực sự thuộc sở hữu của root nên không thể ghi được nếu không có quyền truy cập root, nhưng tôi không chắc liệu tôi có thể an toàn chownkhông. Là tập tin này thậm chí được cho là sở hữu bởi root?
glS

@glS Đã thêm phụ lục ...
klanomath
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.