GNU/Linux >> Linux Esercitazione >  >> Linux

Perché il completamento automatico non funziona quando si digita un nome di comando dopo "source"?

source cerca PATH per impostazione predefinita.

Ma in bash, il completamento automatico non funziona quando si digita il nome di un comando dopo source .

In generale, quando viene eseguito il completamento automatico basato su PATH funziona e quando no?

Come posso farlo funzionare quando digito l'argomento in source ?

Grazie.

Risposta accettata:

source (il bash comando integrato) accetta un nomefile discussione; la ricerca PATH viene avviata solo se il nome file specificato non viene trovato. Quindi source foo prova prima ad aprire ./foo e solo quando fallisce va alla ricerca di /path/dir/foo . Prova il completamento delle schede con i nomi di file che esistono nella tua directory corrente o fornisci i percorsi del comando che ti interessa. Questi dovrebbero essere completati con le schede come ti aspetteresti.

  • Il modo più semplice per ottenere ciò che desideri è riconoscere che il completamento delle schede sta tentando di nomefile completo ma vuoi comando completo . Puoi attivare il comando completo con il M-! combinazione di tasti alias Alt+! . (Vedi il READLINE sezione, Completing sottosezione, in man bash e nella documentazione online di bash per altre funzioni di completamento e combinazioni di tasti predefinite.)

  • Il modo più difficile sarebbe rivedere le funzioni di completamento predefinite attivate per source Il primo argomento per chiamare entrambi nomefile-completo e comando completo funzioni. Vedi help complete (sulla riga di comando), il Programmable Completion sottosezione in man bash e nella documentazione online di bash e il complete comando integrato.

In generale, il completamento delle schede è posizionale e chiama diverse funzioni di completamento in base a dove ti trovi nella riga di comando. Sui sistemi Arch, i pacchetti possono installare un file di completamento in /usr/share/bash-completion per fornire completamenti sensibili al contesto per i loro eseguibili.


Linux
  1. Perché l'espressione regolare funziona in X ma non in Y?

  2. Perché la sostituzione del processo Bash non funziona con alcuni comandi?

  3. Perché un lungo ritardo dopo il comando non trovato?

  4. Il comando Rm nello script Bash non funziona con la variabile?

  5. Perché `zip` in un ciclo For funziona quando il file esiste, ma non quando non lo è?

Comando sorgente Bash

Che cos'è il comando sorgente in Linux e come funziona?

Comando sorgente non trovato

Perché find -exec mv {} ./target/ + non funziona?

Perché bash non si ferma in caso di errore per errori nella sequenza di comandi in cortocircuito?

Perché questa espressione regolare non funziona su Linux?