Quiero ejecutar un comando con ruta absoluta desde cualquier carpeta y hacer que se ejecute el script.
Si trato de ejecutar con la ruta absoluta, aparece un error:
/test/test_bash_script.sh
-bash: /test/test_bash_script.sh: No such file or directory
Archivo /test/test_bash_script.sh
no existe, por lo que no se puede ejecutar.
-
Una ruta absoluta se define como la especificación de la ubicación de un archivo o directorio desde el directorio raíz (
/
). -
/test
no puede ser una ruta absoluta como el directorio/test
no existe (es un subdirectorio de su directorio de inicio).
Tienes dos opciones:
-
Use la ruta absoluta correcta al script:
/Users/danylo.volokh/test/test_bash_script.sh
-
Use la ruta basada en su directorio de inicio:
~/test/test_bash_script.sh
¿Qué es una ruta absoluta?
Una ruta absoluta se define como la especificación de la ubicación de un archivo o directorio desde el directorio raíz (/
).
Origen Ruta absoluta frente a ruta relativa en Linux/Unix
Dado que las barras inclinadas siempre separan los componentes del nombre, si un nombre de ruta comienza con una barra inclinada, se supone que el directorio "RAÍZ" sin nombre comienza el nombre de la ruta. El directorio ROOT no tiene nombre. Es la raíz de todo el árbol del sistema de archivos de Unix.
Un nombre de ruta que comienza con una barra oblicua se denomina nombre de ruta absoluto, ya que siempre comienza en la RAÍZ.
Debido a que es difícil hablar de un directorio que no tiene nombre, generalmente (incorrectamente) usamos el nombre "/" (barra) para el directorio RAÍZ. Esto es incorrecto, porque los componentes del nombre de una ruta no pueden contener barras y barras separadas del nombre. componentes Comprenda que cuando usamos "/" para RAÍZ, en realidad queremos decir "el directorio RAÍZ sin nombre que está a la izquierda de la barra inclinada", no la barra inclinada en sí.
Nombres de ruta Unix/Linux de origen (absoluto, relativo, punto, punto punto)
La ruta absoluta es /Users/danylo.volokh/test/test_bash_script.sh
, no /test/test_bash_script.sh
. Bash tiene razón entonces.