Cada comando falla con "comando no encontrado" después de cambiar .bash_profile?

47

Estaba actualizando mi .bash_profile, y desafortunadamente hice algunas actualizaciones y ahora obtengo:

env: bash: No such file or directory
env: bash: No such file or directory
env: bash: No such file or directory
env: bash: No such file or directory
env: bash: No such file or directory
-bash: tar: command not found
-bash: grep: command not found
-bash: cat: command not found
-bash: find: command not found
-bash: dirname: command not found
-bash: /preexec.sh.lib: No such file or directory
-bash: preexec_install: command not found
-bash: sed: command not found
-bash: git: command not found

Mi bash_profile en realidad extrae otros archivos .sh (los obtiene), por lo que no estoy exactamente seguro de qué modificación puede haber causado esto.

Ahora, si incluso intento una lista de archivos, obtengo:

>ls
-bash: ls: command not found
-bash: sed: command not found
-bash: git: command not found

¿Algún consejo sobre cómo rastrear la fuente del error y cómo usar el terminal para cosas básicas como listar archivos, etc.?

Blankman
fuente
¿Qué sucede si usa la ruta completa de esta manera: / bin / ls? ¿Y qué tipo de cambios estabas haciendo?
KP MacGregor
2
Sí, pegue su .bash_profile
enero
/ bin / ls enumera los archivos, pero luego veo estas 2 líneas debajo:-bash: sed: command not found -bash: git: command not found
Blankman
En caso de que haya un problema /etc/environment, use el siguiente comando (en centos 6):ssh -t root@<server-ip> "/bin/bash -c '/bin/mv /etc/environment /tmp/'"
Edenshaw

Respuestas:

66

Me parece que en un momento u otro está sobrescribiendo la PATHvariable de entorno predeterminada . El tipo de errores que tiene indica que PATHno contiene /bindónde bashresiden los comandos anteriores (incluidos ).

Por ejemplo, si lo haces

PATH=/home/user/bin

en lugar de

PATH="$PATH":/home/user/bin
enero
fuente
Hice esto en un momento:export PATH=PATH:EC2_HOME/bin
Blankman
2
Tienes que usar '$' en la segunda cadena de RUTA - export PATH=$PATH:EC2_HOME/bin
Manula Waidyanatha
extraño cómo 'ec2-describe-regiones' no funciona, a pesar de que está en mi camino, pero esto funciona: $ EC2_HOME / bin / ec2-describe-region También realicé una recarga de fuente ...
Blankman
2
Mira, no sabemos qué estás haciendo, qué otros archivos estás buscando, qué hay en ellos. Y sí, cada vez que obtiene el archivo, agrega cosas a su ruta (lo cual está bien, porque normalmente .bash_profile se leerá solo una vez). Revíselo uno por uno y vea qué sucede. Además, ¿no es EC2_HOME una variable? En caso afirmativo, debe precederlo de la siguiente $manera:export PATH=$PATH:$EC2_HOME/bin
enero del
1
Pierdo la cuenta de cuántas veces me metí en ese problema y cuántas veces esta respuesta me ayudó mucho
Herrgott
21

Una forma de comenzar a depurar su script bash sería iniciar una subshell con la opción -x:

$ bash --login -x

Esto le mostrará todos los comandos y sus argumentos, que se ejecutan al iniciar ese shell.

La opción --login se especifica porque .bash_profile se lee mediante shells de inicio de sesión. Puede encontrar más información sobre la depuración de scripts de bash aquí: http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_02_03.html .

En última instancia, creo que la sugerencia de enero funcionará para usted, pero vale la pena leer ese enlace para futuros problemas.

KP MacGregor
fuente
tengo esto: -bash: bash: comando no encontrado
Yassine Qoraiche
10

Puede que haya encontrado el problema. Funcionó para mí, y podría funcionar para usted ...

Estaba predeterminado con mi editor para guardar Windows (LF / CR). Como uso ambos sistemas, me pareció lógico. Cuando tuve que meterme con mi .bash_profile, me di cuenta después de comentar y probar cosas que nada funcionaba. Cambié mis archivos guardados a formato OS X (solo CR) y ¡voilà! ¡No más "comando no encontrado" en la terminal!

¡Puede ser así de fácil!

cyphire
fuente
Algo muy sutil que me estaba volviendo loco. ¡Gracias por agregar esta respuesta!
samuel.molinski
Esto fue lo que estaba experimentando! Gracias. $ dos2unix .bash_profile
Consejo
¿Estás seguro de que eso fue lo que hiciste? Dado que OS X es Unix, utiliza terminaciones de línea de estilo Unix con un solo carácter de salto de línea (LF), no retorno de carro (CR). El único sistema operativo popular que usaba este último era OS 9 y versiones anteriores y las aplicaciones Linux / Ubuntu estarían bastante confundidas.
David Foerster
6

Después no pude volver a correr. ~ / .bash_profile o cualquier comando habitual como whoami, grep, etc. Pensé en una forma de volver a exportar las rutas requeridas:

export PATH=/usr/local/jdk/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/cpanel/composer/bin:/usr/local/easy/bin:/usr/local/bin:/usr/X11R6/bin:/root/bin

Esto debería funcionar en la mayoría de los sistemas, aunque algunas de estas rutas no están presentes en todos los paquetes de Linux. Funcionó para mi.

Ananth
fuente
4

Creo que podría haber encontrado la respuesta al problema si no fuera por ti y por otros que tienen un problema similar. Mi respuesta a esto es que no tengo un .bash_profile.

Así que estaba buscando en toda la web y encontré la solución. Que es básicamente abrir la terminal, escribir touch ~/.bash_profiley presionar Enter. Eso solucionó mis problemas. Espero que haga lo mismo por ti

Pablo
fuente
8
LOL ... -bash: toque: comando no encontrado
Kumar KL
2

Tengo el mismo problema que tú. No puedo utilizar muchos comandos populares ( ls, vi/vim..) y no puede editar /root/.bashrccuando inicie sesión con suen la raíz.

Finalmente. Encontré la solución para este problema. Simplemente inicie sesión root con el comando:

su -m

Después de eso, puedes usar

vim /root/.bashrc

para editar RUTA.

¡Buena suerte!

MrReS
fuente
2

Yo tuve el mismo problema. Es posible que haya perdido un $ al exportar PATH. Debe abrir el .bash_profile en TextEdit. Si no puede encontrar el archivo en el directorio, presione Comando + Mayús +> para mostrar los archivos ocultos.

Luego, corrija la RUTA y luego guarde.

En el directorio de la Terminal, escriba: source .bash_profile.

Esto debería resolver el problema.

Kensam
fuente
Gracias, resolvió mi problema, finalmente pude editar mi archivo bash_profile.
Touseef Murtaza
1

Tuve exactamente el mismo problema:

Si pongo en lxterminal:

set | grep "jerom/bash"
PATH=/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/jerom/bash/

si ingresé exactamente el mismo comando en tty2 obtuve:

set | grep "jerom/bash"
PATH=/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/jerom/bash\r

\ r significa fin de línea de DOS, así que abrí el archivo ~/.bashrcy cambié los extremos de las líneas en Krusader a estilo unix. ¡Y ya está funcionando! :-)

Los EOL de DOS crean problemas desagradables también en los scripts de bash.

xerostomus
fuente
1

Tengo el mismo problema justo ahora después de cambiar el .bash_profile. Y quiero volver a cambiarlo, pero ahora no puedo, porque perdí todos los comandos, especialmente el comando nano y el comando vim, por lo que no puedo abrir el .bash_profile con el comando. Y .bash_profilees un archivo oculto que no puedo abrir con el Finder.

Entonces necesito encontrar una manera de abrir el archivo .bash_profile. Después de probar muchas formas, descubrí que puedo usar Atom , porque Atom puede leer todos los archivos en una carpeta de proyecto, incluidos los archivos ocultos. Entonces, solo abra Atom y seleccione la carpeta File -> Open, elija <yourusername>, y luego, todos los archivos ocultos se muestran en la vista de árbol de Atom, ¡incluya el .bash_profile!! Después de eliminar la última modificación y volver a abrir la Terminal, ¡volvieron todos los comandos! :)

barra invertida112
fuente