Quando elimino una "parola" in Bash, si ferma a determinati caratteri come _ e / . Ad esempio, se digito
/foo/bar
e attiva backward-kill-word (in genere mappato su Alt –Backspace e/o Ctrl –con ), il testo rimanente è
/foo/
. Questo non corrisponde a $COMP_WORDBREAKS o readline 's rl_completer_word_break_characters . Come posso rilevare (preferibilmente in un sistema in esecuzione, piuttosto che i valori predefiniti nel codice, poiché presumibilmente possono essere sovrascritti) quali caratteri vengono utilizzati per determinare le interruzioni di parola?
Risposta accettata:
La documentazione di bash afferma:
backward-kill-word (M-Rubout)Uccidi la parola dietro il punto. I limiti delle parole sono gli stessi di quelli usati dalla parola all'indietro.
E
backward-word (M-b)Torna all'inizio della parola corrente o precedente. Le parole sono composte da caratteri alfanumerici (lettere e cifre).
La gestione di backward-word in Bash 4.2 viene eseguito nel codice libreadline in bundle (text.c:rl_backward_word ). L'interruzione di parola è basata su rl_alphabetic , che a sua volta si basa su isalnum funzione. Dipende dalle impostazioni locali, ma non è configurabile direttamente in bash.
Nota che Bash 4.0 ha introdotto un altro tipo di "parola" con shell-forward-word e shell-backward-word azioni (e uccidere equivalenti). Questi si interrompono solo sui metacaratteri della shell (()<>;&|" ) e spazi vuoti (possibilmente dipendenti dalle impostazioni locali tramite isblank ), gestito nel codice bash principale (bashline.c ).