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

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>

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.