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でbash実行可能ファイルを取得するには、brewとbrewの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、nodeなどをインストールした後)、一部のステップが失敗します。私の意見で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およびbrew 1.5.2。実行可能ファイルはにインストールされ/usr/local/Cellar/...通常はにリンクされ/usr/local/binます。何らかの理由bashで、例外のようです。brew doctorは、bashリンクできなかったと考えられる理由を明らかにしますが、私が試してみるbrew link bashと、シンボリックリンクが作成できなかったことがわかり/usr/local/share/locale/ca/LC_MESSAGES is not writableます。私がチェックしbrewではないホームページに助言として、rootとしてインストールされています。
glS

/usr/local/share/locale/ca/LC_MESSAGES確かにrootが所有しているため、rootアクセスなしでは書き込みできませんが、安全にchownそれを実行できるかどうかはわかりません。このファイルはrootが所有することも想定されていますか?
glS

@glS追加補遺...
klanomath
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.