finalización de bash en terminal - archivos vs carpetas

2

Hace poco empecé con MacOS, pero hay un extraño comportamiento de finalización con el shell bash (en comparación con OpenSuse Linux con tcsh de donde vengo) que me está molestando:

Por ejemplo, cuando estoy en $ HOME y escribo Pu en la línea de comandos, seguido de tabulación para completar, esperaba que una de las opciones mostradas fuera mi directorio Público /. Sin embargo, siempre que haya archivos ejecutables, la finalización nunca muestra los directorios que comparten el mismo prefijo. Solo después de ingresar Publ, la finalización de la pestaña me da Público / ya que no hay más ejecutables con ese prefijo.

Entonces, mi pregunta sería: ¿hay alguna opción para que la finalización muestre directamente los archivos ejecutables y los directorios con el prefijo dado?

Ya intenté actualizar a bash 4 e instalar bash-completed a través de homebrew, pero eso no ayudó. Sospecho que la línea de lectura de MacOS se comporta de manera diferente o que hay algunos ajustes más para .inputrc que no conozco.

Además, sé que al comenzar con ./ solo obtengo directorios. Esta es la bandaid que utilizo en este momento.

    
pregunta shiin 11.08.2015 - 16:42

3 respuestas

1

Para la mayoría de shells con una función de expansión de archivos, lo que se expande en la posición argv[0] es un ejecutable que se encuentra dentro de uno de los directorios de la variable PATH.

Si desea buscar directorios cuando se ingresa como primer argumento dentro de bash o zsh , simplemente modifique PATH de la siguiente manera:

PATH=${PATH}:.

y pruébalo con:

Pub tab

Para tcsh , la modificación equivalente de PATH se obtiene con:

setenv PATH ${PATH}:.

Advertencia

Incluir . en la variable PATH es un riesgo de seguridad. Desde esta modificación, cualquier archivo en el directorio donde se encuentre se encontrará como un comando estándar. Esto podría llevarte a ejecutar archivos que nunca hubiera intentado ejecutar de otro modo: ejecutables que causarán una volcado de núcleo en un directorio de desarrollo, o binarios que lo harán ejecute comandos para obtener acceso privilegiado a su sistema.

Este riesgo es el mismo para cualquier sistema operativo tipo Unix.

    
respondido por el daniel Azuelos 12.08.2015 - 00:42
1

que yo sepa, es una característica, no un error.

simplemente puedes cambiar a tcsh , aquí es una guía (eventualmente debes instalarla a través de homebrew, luego adaptar la ruta)

    
respondido por el Schwertspize 11.08.2015 - 16:51
-3

Pruébalo con ./Pub[tab]

el ./ hace que sea el directorio actual para iniciar las terminaciones de tabulación desde

(me gustaría saber cómo esto no es útil, ya que también funciona en Linux)

    
respondido por el Hvisage 11.08.2015 - 18:10

Lea otras preguntas en las etiquetas