Resultados de finalización de línea de comandos de Freaky Bash

3

Un-tar-ed un archivo y tenía un directorio llamado "~ algo".

Sin pensarlo, tecleé "cd ~" y presioné tab para que bash completara el nombre. En lugar de obtener el resultado "~ algo" que esperaba, obtuve una lista completa de cosas que comienzan con "~". Algunos de ellos son un poco desconcertantes. Cosas como: ~ pulse ~ sys / ~ daemon / ~ kernoops / ~ mysql / ~ root / ~ syslog ~ libuuid / ~ rtkit / ~ usbmux

Eliminé los directorios tar y probé desde otro directorio con los mismos resultados.

Hice un hallazgo en un par de estos comenzando desde / hacia abajo y no encontré nada, pero estoy confundido de dónde y por qué a Bash se le ocurrió esta lista y me preguntaba si tal vez hubiera sido rooteado.

Gracias por cualquier idea

Newton Falls
fuente

Respuestas:

4

~ indica el directorio de inicio del usuario actual. ~username indica el directorio de inicio de ese usuario. bash ve el ~ y asume que desea algún directorio de inicio en el sistema. Si quieres un literal "~" entonces necesitas escapar de él.

cd \~<Tab>
Ignacio Vazquez-Abrams
fuente
Pero no tengo ningún directorio de inicio con los nombres que bash inventó. Tampoco ningún archivo con esos nombres en mi propio directorio personal. No entiendo cómo a Bash se le ocurrió la lista.
Newton Falls
Cada usuario tiene un directorio de inicio. No todos estan bajo /home.
Ignacio Vazquez-Abrams
Ah ok Ejecuté cat en / etc / passwd y los nombres que vi están en el archivo. Pero sus entradas de directorio principal apuntan a directorios que no existen, por ejemplo, / home / kdm
Newton Falls
Supongo que Bash está tomando un atajo y listando directorios de inicio de /etc/passwd Sin verificar necesariamente que los directorios existen realmente.
Newton Falls