globstar: bash 4.X ile bile macOS'ta geçersiz kabuk seçeneği adı


22

Yeni globstarseçenek gerektirir bash 4. Peki .. bashBiz neredeyiz?

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

Deneyelim globstar:

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

MacOS'ta bunun için destek almanın bir yolu var mı?

Yanıtlar:


19

Girme shoptsize Apple'ın partisi yüzünden globstar içermez tüm bash seçenekleri ile kullanıcıların bir listesini alır. Muhtemelen bash bu seçenek için destek olmadan derlenir.

Globstar install brew ve brew's bash ile bash yürütülebilir dosyası almak için:

$ 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

Ardından, Terminal'de açılan varsayılan kabuğu / usr / local / bin / bash-terminal-app olarak değiştirin ve 'Bu sekmeyi kapatmak istiyor musunuz?' pencereleri ve sekmeleri kapatırken komut istemleri için hariç tutulanlar listesine 'bash' ekleyin.

Yeni seçenek listesi şu şekildedir:

$ 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

Belirli koşullar altında / usr / local / share / ve alt klasörleri köke aittir (ör. Smartmontools, nmap, node vb. Özel yükleyicilerine yüklendikten sonra) ve bazı adımlar başarısız olur. Benim görüşüme göre chown -Rdemlemek / bash yükleyen yönetici kullanıcı klasörlere kaydedin . MacOS ve demlemek neredeyse vanilya kurulumunda, / usr / local / share ve / usr / local / share / locale bu yönetici kullanıcısına aittir.


son ln -sbenim için eksik bir adımdı.
javadba

1
bu benim için işe yaramıyor. /usr/local/bin/bashtarafından oluşturulmadı brew. Ayrıca, nedir bash-terminal-app?
glS

@klanomath Sierra 10.12.6 ve demleme 1.5.2. Yürütülebilir dosyalar içine yüklenir /usr/local/Cellar/...ve genellikle bunlara bağlanır /usr/local/bin. Bazı nedenlerden dolayı, bashbir istisna gibi görünüyor. brew doctorOlası nedeni, bu bashbağlantı kurulamadı olarak ortaya koymaktadır , ancak denerseniz brew link bashben symlink oluşturulamadı çünkü /usr/local/share/locale/ca/LC_MESSAGES is not writable. Kontrol ettim ve brewoldu değil ana sayfasına tavsiye olarak, kök olarak yüklenmiş.
glS

/usr/local/share/locale/ca/LC_MESSAGESgerçekten de root erişimi olmadan yazılamaz root'a ait, ama sadece güvenli bir şekilde yapıp yapamayacağımdan emin değilim chown. Bu dosyanın sahibi bile var mı?
glS

@glS Addendum ...
klanomath
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.