Restaurer le paramètre shopt -s nocaseglob par défaut dans OS X

4

En essayant de rendre Bash for OSX TAB-Auto-Completion insensible à la casse, j'ai suivi une suggestion pour exécuter ces commandes:

shopt -s nocaseglob
bind 'set completion-ignore-case on'

Comment restaurer les paramètres ci-dessus sur les valeurs par défaut d'OS X?

Drapeaux d'hiver
la source

Réponses:

1

Voulez-vous dire que vous avez ajouté ces commandes dans un script ou dans l'un de vos fichiers dot ( .bash_profile, etc.), ou que vous avez simplement exécuté les commandes dans le terminal lui-même?

Si vous venez d'exécuter les commandes dans le terminal, démarrez simplement une nouvelle session et les valeurs par défaut devraient être restaurées. Ouvrez un nouvel onglet de terminal ou une nouvelle fenêtre et voyez si la fonctionnalité normale est restaurée, comme il se doit.

Ces paramètres ne doivent pas affecter l'ensemble du système, à moins qu'ils ne soient automatiquement chargés dans un fichier créé lors du chargement de chaque session. Dans ce cas, vous pouvez simplement supprimer l'entrée de votre .bash_profileou de l'endroit où elle a été ajoutée.

Vous pouvez vérifier si les paramètres sont automatiquement chargés dans votre .bash_profileen exécutant sudo -sto be, rootpoint auquel les root'sfichiers de points sont chargés, qui ont priorité sur l'utilisateur précédent. Si cela fonctionne normalement en tant que root, commencez à creuser vous-même ~/.bash_profileou ~/.bashrcsupprimez ces commandes / paramètres. Les fonctionnalités par défaut doivent être restaurées lors du prochain chargement d'une session shell.

rubynorails
la source
2

Une première solution
Pour restaurer une situation, vous devez connaître la précédente.
Les commandes bindet shoptsont si confortables que parmi les rares options qu’elles présentent, il en existe une ( -ppour la première et -vpour la seconde) qui donne la sortie dans un format utilisable, presque directement, pour les restaurer :

shopt -p   | grep nocaseglob               # shopt -u nocaseglob
bind  -v   | grep completion-ignore-case   # set completion-ignore-case off

La sortie est indiquée ci-dessus après le #signe.
Une fois que vous connaissez la valeur de départ, vous pouvez créer un couple d'alias pour aller dans Ignore More ( IgnoreGo) et en sortir ( IgnoreExit):

alias IgnoreGo="shopt -s nocaseglob; bind 'set completion-ignore-case on'"
alias IgnoreExit="shopt -u nocaseglob; bind 'set completion-ignore-case off'"

Vous pouvez mettre cet alias avec l'autre de votre shell de configuration (généralement dans ~/.bash_aliases ou ~/.bashrc) et l'utiliser quand vous le souhaitez. Le problème est que ceux qui sont aveugles, ils ne verront pas la situation réelle de votre coquille.

Une meilleure solution
Juste pour rendre tout cela indépendant de votre connaissance de ces valeurs de variables et un peu plus complexe, vous pouvez créer un function ( Store) pour créer un alias ( ReStore) pour revenir en arrière, quelle que soit la situation initiale.

 Store(){ alias ReStore="$(shopt -p|grep nocaseglob); \
          bind '$(bind -v|grep completion-ignore-case)'"; }

Même cela peut être écrit dans le fichier de configuration de votre shell (voir ci-dessus). Chaque fois que Storevous gèlez la situation réelle et ReStorerétablissez la dernière gelée .
Notez qu'il \doit s'agir du dernier caractère de la ligne pour fractionner la commande dans un format plus lisible sur deux lignes.

Note
Sur mon système pour exécuter une commande (par exemple, pour naviguer avec cd), il suffit de donner bind 'set completion-ignore-case on'à activer le cas ignorer, même quand nocaseglobest off. L' nocaseglobon est nécessaire pour l'extension du chemin d'accès. Il existe même le nocasematchpour les motifs. help bashlire plus ...

Aide sur les commandes
Les commandes bindet shoptsont intégrées au shell. Cela signifie que vous devez utiliser le manuel helpplutôt que d' utiliser le manuel man.
Pour n’avoir qu’une sortie lisible par l’homme, vous pouvez utiliser

shopt    | grep nocaseglob               # nocaseglob      on 
bind -V  | grep completion-ignore-case   # completion-ignore-case is set to `off'
Hastur
la source
1

Comme indiqué dans le manuel Bash # 4.3.2 The Shopt Builtin , c’est le moyen d’activer / désactiver les shoptvaleurs:

-s → Activer (définir) chaque optname.

-u → Désactive (désactive) chaque optname.

De même, vous pouvez désactiver l' completion-ignore-caseoption avec:

bind 'set completion-ignore-case off'
Fedorqui
la source