comandos no encontrados en zsh


138

Estoy usando z Shell ( zsh) en lugar del bash predeterminado, y sucede algo incorrecto para que todos los comandos que solían funcionar ya no se reconozcan:

ls
zsh: command not found: ls

open -e .zshrc
zsh: correct 'open' to '_open' [nyae]? 

No sé cómo restablecer zsho cómo solucionar esto. Aquí está el contenido de la $PATHvariable:

echo $PATH
/Users/Malloc/bin/Sencha/Cmd/3.1.2.342:/usr/local/bin/mate

No puedo abrir el .bash_profilearchivo ni el .zshrcarchivo, parece que la única solución es restablecer el zsh. ¿Algunas ideas?

EDITAR:

Incluso intenté restablecer zshcomo se indica en este hilo , pero siempre recibí un command not founderror:

exec zsh
zsh: command not found: zsh

Entonces, ¿qué está pasando? ¿Por qué se pierden todos los comandos?

Respuestas:


218

Es evidente que has logrado estropear tu PATHvariable. (Su actual PATHno contiene ninguna ubicación donde se encuentran los servicios públicos comunes).

Tratar:

PATH=/bin:/usr/bin:/usr/local/bin:${PATH}
export PATH

Alternativamente, para "restablecer" zsh, especifique la ruta completa al shell:

exec /bin/zsh

o

exec /usr/bin/zsh

17
Cuando me actualicé a Catalina, cambié al shell zsh y me estropeó el camino hasta el punto en que no podía ejecutar ninguna aplicación de terceros que usara. Simplemente tuve que modificar el archivo .zshrc y agregar "export PATH = << location of my bins >>" e hice el exec / bin / zsh y todo estuvo bien.
Robert Walters

18

En su archivo de configuración ~ / .zsh incluya la ruta a su archivo de ruta bash que contiene sus alias. En mi caso, incluía la línea "source ~ / .bash_profile" dentro de ~ / .zsh.


1
Muchas gracias, lo resolvió por mí. Tuve el problema después de actualizar a Catalina y cambié a shell zsh.
neiya

1
No tengo un ~/.zsharchivo En cambio, tuve que ponerlo /etc/zshrc.
Chase Roberts

14
  1. Use un buen editor de texto como VS Code y abra su .zshrcarchivo (debe estar en su directorio de inicio. Si no lo ve, asegúrese de hacer clic derecho en la carpeta de archivos al abrir y elegir la opción para "mostrar archivos ocultos") .

  2. encuentra donde dice: export PATH=a-bunch-of-paths-separated-by-colons:

  3. inserte esto al final de la línea, antes de la cita final: :$HOME/.local/bin

Y debería funcionar para ti.

Puede probar si esto funcionará primero escribiendo esto en su terminal primero: export PATH=$HOME/.local/bin:$PATH

Si el error desaparece después de escribir esto en el terminal y su terminal funciona normalmente, la solución anterior funcionará. Si no es así, tendrá que encontrar la carpeta donde se encuentra su error de referencia (lo que no se encuentra) y reemplazar la RUTA anterior con la RUTA A LA CARPETA.


Ah, ahí está mi error que llevó a zsh a aparentemente "ignorar" mi PATHconfiguración. Desde bash, estaba acostumbrado a prefijar directorios dentro de mi carpeta de inicio con ~. Entonces resulta que para zsh debería usar la $HOMEvariable, como en su ejemplo.
lalilulelost

7

Puede crear un enlace simbólico en / usr / local / bin /

sudo ln -s $HOME/.composer/vendor/bin/homestead /usr/local/bin/homestead

Muchas gracias. Estaba teniendo problemas y esta respuesta me hizo darme cuenta de que no estaba usando $HOMEy proporcionando un camino relativo. Usando la ruta completa con $HOMEsolucionó mi problema.
Tasomaniac

+1 para muchos casos de uso simples: agregar un enlace simbólico es el camino a seguir si solo está buscando agregar un ejecutable. Si está buscando administrar múltiples ejecutables en una nueva carpeta, entonces agregar $PATHes mejor en ese caso de uso.
David Bodow


4

Solucioné el problema abriendo la pestaña general de preferencias de terminal y cambiando el comando (ruta completa) /bin/basha la predeterminada y luego editando el ~/.zshrcarchivo.

ingrese la descripción de la imagen aquí

export PATH="all your path inside the quotes"

... sin espacios en blanco entre PATH="y guardar el archivo.

ingrese la descripción de la imagen aquí

Después de guardar el archivo, cambie el /bin/zshen su comando o seleccione predeterminado ingrese la descripción de la imagen aquí

... y reinicie la terminal y ¡debería tener su shell zsh funcionando nuevamente!


4

Si te gusto, tendrás dos aplicaciones de terminal, una es la terminal predeterminada con bash como shell predeterminado y otra iTerm 2 con zsh como shell. Para tener ambos comandos y zsh en iTerm 2 desde bash, debe hacer lo siguiente:

En iTerm 2, vaya a preferencias (o comando). Luego vaya a la pestaña de perfil y baje al comando . Como puede ver en la imagen a continuación, debe seleccionar la opción de comando y pegar la ruta del shell zsh (para encontrar la ruta, puede hacerlo which zsh).

ingrese la descripción de la imagen aquí

En este punto, tendrá el zsh como su shell predeterminado SOLO para iTerm 2 y tendrá bash como el shell predeterminado global en la aplicación de terminal de Mac predeterminada. A continuación, todavía nos faltan los comandos de bash en zsh. Entonces, para hacer esto, debe ir a su bash (donde tiene sus comandos trabajando) y obtener la variable PATH de env (use este comando para hacer eso:) env | grep PATH.

Una vez que tenga eso, vaya a su iTerm 2 y pegue su ruta en la opción "enviar texto al inicio".

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

¡Simplemente vuelva a abrir iTerm 2 y listo!


La razón por la que agregamos la exportación a "Enviar texto al inicio" es que, por alguna razón para mí, la ruta siempre se restablece a lo que era antes cada vez que volvía a abrir iTerm 2. Así que esta es una buena manera de solucionarlo.
Kamil B

3

Mi solución:

Cambiar de nuevo a bash:

source .bashrc

siguiente:

echo $PATH

Copia esto:

/home/frank/.asdf/shims:/home/frank/....

volver a la zsh:

source .zsh

abierto .zshrc:

y pegar:

 export PATH=/home/frank/.asdf/shims:/home/frank/....

reiniciar terminal


1

En mi caso, fue por error que el código comentado no estaba comentado en la primera línea.

# If you come from bash you might have to change your $PATH.

El hash fue eliminado. Después de volver a agregarlo funcionó bien.

Acabo de publicar esto aquí para que alguien pueda encontrar esto útil. Porque es solo el comienzo de la línea y podría eliminarse por error como lo había hecho. Y parece que no hay solución después de intentarlo de varias maneras.


1

La mejor solución funciona para mí para la ruta de cambio permanente

Abra Finder-> vaya a la carpeta / Usuarios / / usr / local / bin

Abra .zshrc con TextEdit

.zshrc es un archivo oculto, así que muéstralo con command + shift +. prensa

eliminar el contenido del archivo y escribir

RUTA de exportación = ~ / usr / bin: / bin: / usr / sbin: / sbin: $ PATH

y guardar

ahora

zsh: comando no encontrado ido



0

Como han dicho otros, simplemente reiniciar el terminal después de haber realizado cambios debería restablecerse y los cambios que haya realizado en su archivo ~ / .zshrc. Por ejemplo, después de agregar la función para abrir Visual Studio:

function code {  
    if [[ $# = 0 ]]
    then
        open -a "Visual Studio Code"
    else
        local argPath="$1"
        [[ $1 = /* ]] && argPath="$1" || argPath="$PWD/${1#./}"
        open -a "Visual Studio Code" "$argPath"
    fi
}

Pude usar el código de la palabra clave para abrir el programa desde la línea de comandos.


0

Una forma de editar el archivo .zshrc sin hacerlo a través de iTerm2 o Terminal nativo en macOS es usar un terminal en otra aplicación. Por ejemplo, utilicé el terminal como parte de VSCode y pude encontrar y editar el archivo.


-1

Desinstalar y reinstalar zsh funcionó para mí:

sudo yum remove zsh
sudo yum install -y zsh
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.