No existe tal archivo o directorio después de escribir $ PATH en la terminal

13

cuando escribo en la terminal

echo $PATH

mi salida es

:/home/bo/bin:/usr/local/bin:/usr/sbin:/usr/local/sbin:/usr/bin:/sbin:/bin

pero cuando escribo solo:

$PATH

esta salida no entiendo bien, la salida es:

bash: :/home/bo/bin:/usr/local/bin:/usr/sbin:/usr/local/sbin:/usr/bin:/sbin:/bin: No such file or directory

y mi pregunta es, ¿por qué escribió "No existe tal archivo o directorio?" cada directorio de la variable PATH existe.

wair92
fuente

Respuestas:

20

$PATHes una variable, que estoy seguro de que conoce. Cuando se resuelve esa variable, sería lo mismo que escribir :/home/bo/bin:/usr/local/bin:/usr/sbin:/usr/local/sbin:/usr/bin:/sbin:/bin:y esperar que algo suceda. La razón echo $PATHfunciona porque explícitamente lo está canalizando a la pantalla en lugar de decirle al terminal que "haga" $PATH.

Daniel Park
fuente
2

En caso de que aún no lo obtenga de las otras respuestas, es lo mismo que esto:

$ echo the quick brown fox
the quick brown fox
$ the quick brown fox
bash: the: command not found

$ echo and/or the black and white cats
and/or the black and white cats
$ and/or the black and white cats
bash: and/or: No such file or directory

La primera palabra de cada línea de comando tiene que ser un comandoechoes un comando  the` and/or` y :/home/bo/bin:/usr/local/bin:/usr/sbin…no lo son. Y, aparentemente, cuando escribe una línea de comando que comienza con una palabra que no es un comando, bash dice No such file or directorysi la palabra contiene uno o más /caracteres, y command not foundsi no lo tiene.

G-Man dice 'restablecer a Mónica'
fuente
1

Escribiendo

$ RUTA

en realidad no está haciendo nada más que expandir su contenido en la línea de comando:

: / home / bo / bin: / usr / local / bin: / usr / sbin: / usr / local / sbin: / usr / bin: / sbin: / bin

y este no es un comando válido, que conduce legítimamente al mensaje que está recibiendo.

¿Qué esperabas que escribir solo $PATHsirva?

miroxlav
fuente
Supongo que la expectativa que $PATHesencialmente imprimiría la variable en la pantalla sin intentar ejecutarla, sin embargo, este no es el caso.
iDrwish
0

En Linux, el terminal está esperando un command, $ PATH no es un comando, es un variable.

Cuando escribe echo $PATH, está preguntando el contenido de la variable y con el comando echoque lo muestra en la pantalla.

jcbermu
fuente
0

La variable $PATHcontiene múltiples directorios separados por dos puntos. El shell espera un archivo ejecutable u otro comando (por ejemplo, un comando incorporado del shell, como cd) como entrada. Los comandos como lsy catson solo ejecutables ubicados en uno de los directorios $ PATH. Varios directorios encadenados por dos puntos generalmente no forman una ruta de archivo UNIX adecuada. Aviso: si ingresa solo uno de los directorios sin los dos puntos, obtendrá un resultado diferente.

jkd
fuente