globstar: nombre de opción de shell no válido en macOS incluso con bash 4.X

16

La nueva opción globstar requiere bash 4 . Entonces ... ¿en qué bash estamos?

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

Probemos globstar :

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

¿Hay alguna forma de obtener soporte para esto en macOS?

    
pregunta javadba 18.07.2017 - 22:41

1 respuesta

14

Al ingresar shopt , obtendrás una lista con todas las opciones de bash que no incluyen globstar para bash de Apple. Probablemente bash está compilado sin soporte para esta opción.

Para obtener un ejecutable de bash con globstar install brew y 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

Luego, cambie el shell predeterminado abierto en Terminal a / usr / local / bin / bash-terminal-app y elimine el mensaje '¿Desea cerrar esta pestaña?' Cuando cierre ventanas y pestañas, agregue 'bash' a la lista de exclusiones.

La nueva lista de opciones es entonces:

$ 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

Bajo ciertas circunstancias, / usr / local / share / y sus subcarpetas son propiedad de root (por ejemplo, después de instalar smartmontools, nmap, node, etc. con sus instaladores personalizados) y algunos de los pasos fallan. En mi opinión, se guardan en chown -R las carpetas para el usuario administrador que instaló brew / bash. En mi instalación casi perfecta de macOS y brew, / usr / local / share y / usr / local / share / locale son propiedad de este usuario administrador.

    
respondido por el klanomath 18.07.2017 - 23:05

Lea otras preguntas en las etiquetas