bash completamento nel terminale - file vs cartelle

2

Ho appena iniziato con MacOS, ma c'è uno strano comportamento di completamento con la shell bash (rispetto a OpenSuse Linux con tcsh da dove vengo) che mi infastidisce:

Ad esempio, quando sono in $ HOME e scrivo Pu sulla riga di comando, seguito da tabulazioni per il completamento, mi aspettavo che una delle opzioni mostrate sarebbe stata la mia directory Public /. Tuttavia, finché ci sono file eseguibili, il completamento non mostra mai le directory che condividono lo stesso prefisso. Solo dopo aver inserito Publ, il completamento del tab mi dà Pubblico / poiché non ci sono più eseguibili con quel prefisso.

Quindi la mia domanda sarebbe, c'è un'opzione per far sì che il completamento mostri direttamente gli eseguibili e le directory con il prefisso specificato?

Ho già provato l'aggiornamento a bash 4 e l'installazione di bash-completion via homebrew, ma questo non ha aiutato. Ho il sospetto che la lettura di MacOS si comporti diversamente o che ci siano altre impostazioni per .inputrc di cui non sono a conoscenza.

So anche che iniziando con. / ho solo delle directory. Questo è il cerotto che uso al momento.

    
posta shiin 11.08.2015 - 16:42
fonte

3 risposte

1

Per la maggior parte delle shell con una funzione di espansione file, ciò che è espanso in% posizione diargv[0] è un eseguibile trovato all'interno di una delle directory della variabile PATH.

Se vuoi trovare le directory quando inserisci come 1o argomento in bash o zsh , modifica semplicemente PATH come segue:

PATH=${PATH}:.

e testalo con:

Pub scheda

Per tcsh la modifica equivalente di PATH è ottenuta con:

setenv PATH ${PATH}:.

Attenzione

Includere . nella variabile PATH è un rischio per la sicurezza. Dal momento che questa modifica qualsiasi file nella directory in cui ti trovi sarà trovato come un comando standard. Questo potrebbe portarti a eseguire i tuoi file non avrei mai provato a eseguire altrimenti: eseguibili che causano a core dump in una directory di sviluppo, o binari che ti faranno esegui i comandi per ottenere l'accesso privilegiato al tuo sistema.

Questo rischio è lo stesso per qualsiasi sistema operativo Unix.

    
risposta data 12.08.2015 - 00:42
fonte
1

per quanto ne so, è una funzionalità, non un bug.

potresti semplicemente passare a tcsh , qui è una guida (eventualmente dovrai installarla tramite homebrew, quindi adattare il percorso)

    
risposta data 11.08.2015 - 16:51
fonte
-3

Provalo con ./Pub[tab]

./ rende la directory corrente per avviare i completamenti di tab da

(Mi piacerebbe sapere come questo non è utile, visto che funziona anche in Linux?)

    
risposta data 11.08.2015 - 18:10
fonte

Leggi altre domande sui tag