Los comandos básicos no funcionan, es decir: -bash: ls: no existe tal archivo o directorio

8

Soy nuevo en Unix y en el proceso de instalación de un programa para mi disertación, debo haber jugado con la RUTA para los comandos básicos de Unix como ls. Cada vez que escribo lsy el nombre del directorio para el que quiero enumerar los archivos, aparece como:

-bash: ls: No such file or directory

¿Qué puedo hacer para arreglar esto? ¡Cualquier ayuda es muy, muy apreciada!

Mariaa
fuente
La razón por la que ls no funciona pero el cd está documentado en mi respuesta
Michael Durrant

Respuestas:

23

Restablezca su ruta ahora (es decir, antes de cualquier tipo de cierre de sesión) con:

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

No restaura su RUTA completa, pero las utilidades básicas estarán disponibles nuevamente.

Aquí hay un ejemplo del tipo de cosas que suceden:

Tenías una variable PATH (conocida como $ PATH cuando leías de ella)

Algo como:

$ echo $PATH
/home/durrantm/.rvm/gems/ruby-2.0.0-p247/bin:/home/durrantm/.rvm/gems/ruby-2.0.0-p247@global/bin:/home/durrantm/.rvm/rubies/ruby-2.0.0-p247/bin:/home/durrantm/.rvm/bin:/h
ome/durrantm/.autojump/bin:/usr/local/heroku/bin:/home/durrantm/bin:/home/durrantm/.autojump/bin:/usr/local/heroku/bin:/home/durrantm/.autojump/bin:/usr/local/heroku/bin:
/home/durrantm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/durrantm/.rvm/bin:/home/durrantm/.rvm/bin:/home/durrantm
/.rvm/bin

Intentaste agregarle, pero accidentalmente usaste

PATH=PATH:other_dir

en vez de

PATH=$PATH:other_dir

y el resultado fue que tu camino se convirtió

PATH:other_dir

y luego todas las utilidades como ls y sed no funcionan

Puede arreglar el conjunto mínimo haciendo

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

lo cual es particularmente útil si un archivo de puntos de inicio de sesión está estropeando su RUTA
Verifique sus archivos .bashrc y / o .bash_profile para ver si hay cambios en la RUTA.

Como Greg dice, también puede cerrar sesión (o una opción más segura, abrir una nueva ventana en caso de que se abra una nueva ventana) y luego hacer eco de $ PATH desde una nueva ventana.

Lo mismo sucede cuando lo haces path=sin valores. Se 'borra' su ruta actual y causa estos problemas. Texto fuerte

En cuanto a por qué , cuando tiene estos problemas, cd funciona y ls no funciona:

  • cd es un comando "incorporado" que no necesita su RUTA para encontrar el programa
  • ls es un programa y necesita usar PATH para encontrar dónde está.

Puedes ver esto con:

$ builtin ls
-bash: builtin: ls: not a shell builtin
14:47:29 mdurrant C02MH2DQFD58 /Users/mdurrant
$ builtin cd
14:47:31 mdurrant C02MH2DQFD58 /Users/mdurrant
$

Ningún error significa que el comando está incorporado

Antes de 'seguir adelante' (o cerrar sesión) ...

Asegúrese de probar cualquier cambio ( particularmente aquellos en .bashrc, .profile, etc. que están haciendo comandos de configuración de RUTA) abriendo una nueva ventana o haciendo source ~ / .bash_profile para ejecutarlo. También es una buena práctica mantener abierta la ventana y el editor (cuando está cambiando el archivo .bash_profile) en caso de que sus cambios no funcionen y evitar que abra nuevas ventanas para editar el archivo. Aunque todavía puede usar TextEdit u otro editor simple para cambiar el archivo (evitando la línea de comando y vi, por ejemplo). Tenga cuidado de NO reiniciar si / cuando su shell está roto o es posible que ni siquiera pueda iniciar sesión. y eso es realmente muy malo (sin otra cuenta sude la que se manguera). Me ha pasado!

Sin embargo, mi solución de "cuenta adicional" también fue un salvavidas y muy recomendable para todos (¡hazlo ahora!)

Michael Durrant
fuente
¡Oye! ¡Muchas gracias! Acabo de restablecer la ruta, pero cuando abro una nueva ventana de terminal sucede lo mismo. Luego hice más ~ / .bash_profile para verificar cualquier cambio y muestra esto: export PATH =
Mariaa
¿Eso es normal?
Mariaa
Además, cuando hago eco de $ PATH no obtengo resultados ... no estoy seguro de si eso es normal o no
Mariaa
@Mariaa, ¿cómo restableces la ruta al archivo o comando?
jgr208
1
Asegúrese de probar cualquier cambio abriendo una nueva ventana o source ~/.bash_profileejecutando. También es una buena práctica mantener abierta la ventana y el editor (donde está cambiando el archivo .bash_profile) en caso de que los cambios no funcionen y evitar que abra nuevas ventanas para editar el archivo. Aunque todavía puede usar TextEdit u otro editor simple para cambiar el archivo.
Michael Durrant
8

Los cambios que ha realizado PATHson probablemente temporales. Cierre el caparazón en el que se encuentra exity vuelva a abrirlo.

En el caso de que haya editado un archivo que establece los PATHshells recién abiertos, especifique la ruta completa a los comandos para corregir lo que haya cambiado (por ejemplo /usr/bin/vim).

Greg Hewgill
fuente
¡Hola! Gracias (intenté hacer esto, pero no funciona. Supongo que realmente hice algo extraño. Recuerdo haber usado vim para hacer algo con PATH y luego todo se estropeó. Ugh, desearía saber más lenguaje de computadora para arreglar esto!
Mariaa
es /usr/bino cualquier bindirectorio en su camino? @Mariaa
jgr208
jgr208: esta es mi ruta: / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin
Mariaa
@Mariaa ¿no eliminaste bin ni nada y tienes acceso de lectura a los archivos correcto?
jgr208
Sin embargo, solo puedo ver esto o usar cualquier comando cuando ingreso PATH = / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin this en una nueva terminal ventana ... de lo contrario no puedo usar ninguno de los comandos. No los reconoce: S
Mariaa