2 votos

finalización de bash en la terminal - archivos vs carpetas

Hace poco que he empezado con MacOS, pero hay un comportamiento de finalización extraño con el bash shell (comparado con OpenSuse Linux con tcsh de donde vengo) que me está fastidiando:

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

Así que mi pregunta sería, ¿hay una opción para que el completamiento muestre directamente los ejecutables y directorios con el prefijo dado?

Ya intenté actualizar a bash 4 e instalar bash-completion a través de homebrew pero eso no ayudó. Sospecho que, o bien 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 empezando por ./ sólo obtengo directorios. Esta es la banda que utilizo en este momento.

1voto

Schwertspize Puntos 91

Por lo que sé, es una característica, no un error.

se puede cambiar a tcsh , aquí hay una guía (eventualmente hay que instalarlo vía homebrew, luego adaptar la ruta)

1voto

Rich Puntos 2429

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

Si quiere encontrar directorios cuando se introduce como primer argumento dentro de bash o zsh Simplemente, modifique PATH como sigue:

PATH=${PATH}:.

y probarlo con:

Pubtab

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

setenv PATH ${PATH}:.

Advertencia

Para incluir . en el PATH es un riesgo para la seguridad. A partir de esta modificación cualquier archivo en el directorio donde se encuentre será encontrado como un comando estándar. Esto podría llevarle a ejecutar archivos que nunca habría intentado ejecutar de otra manera: ejecutables que causarán un que provocarán un volcado del núcleo en un directorio de desarrollo, o binarios que le harán ejecutar comandos para obtener acceso privilegiado a su sistema.

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

-3voto

Hvisage Puntos 20

Pruébalo con ./Pub[tab]

el ./ lo convierte en el directorio actual desde el que se inician los completadores de pestañas

(Me gustaría saber por qué esto no es útil, ya que también funciona así en Linux )

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X