2

У меня есть файл:

/Users/danylo.volokh/test/test_bash_script.sh

Содержание очень просто:

#!/usr/bin/env bash
echo "-- print from script"

Я в папке "Данило.волох"

Эта команда работает нормально:

Danilos-MacBook-Pro:~ danylo.volokh$ test/test_bash_script.sh 
-- print from script

Но если я пытаюсь запустить с абсолютным путем, я получаю ошибку:

Danilos-MacBook-Pro:~ danylo.volokh$ /test/test_bash_script.sh 
-bash: /test/test_bash_script.sh: No such file or directory

Я хочу запустить команду с абсолютным путем из любой папки и получить скрипт для выполнения.

2 ответа2

12

Я хочу запустить команду с абсолютным путем из любой папки и получить скрипт для выполнения.

Если я пытаюсь запустить с абсолютным путем, я получаю сообщение об ошибке:

/test/test_bash_script.sh 
-bash: /test/test_bash_script.sh: No such file or directory

Файл /test/test_bash_script.sh не существует, и поэтому не может быть выполнен.

  • Абсолютный путь определяется как указание расположения файла или каталога из корневого каталога (/).

  • /test не может быть абсолютным путем, так как каталог /test не существует (это подкаталог вашего домашнего каталога).

У вас есть два варианта:

  1. Используйте правильный абсолютный путь к сценарию:

    /Users/danylo.volokh/test/test_bash_script.sh
    
  2. Используйте путь, основанный на вашем домашнем каталоге:

    ~/test/test_bash_script.sh
    

Что такое абсолютный путь?

Абсолютный путь определяется как указание расположения файла или каталога из корневого каталога (/).

Исходный абсолютный путь против относительного пути в Linux/Unix

Поскольку косые черты всегда разделяют компоненты имени, если имя пути начинается с косой черты, предполагается, что безымянный каталог "ROOT" начинает путь. Каталог ROOT не имеет имени. Это корень всего дерева файловой системы Unix.

Путь, начинающийся с косой черты, называется абсолютным путем, поскольку он всегда начинается с ROOT.

Поскольку трудно говорить о каталоге, у которого нет имени, мы обычно (неправильно) используем имя "/" (косая черта) для каталога ROOT. Это неправильно, потому что компоненты имени пути не могут содержать косые черты и косые черты отдельных компонентов имени. Поймите, что когда мы используем «/» для ROOT, мы действительно имеем в виду «безымянный каталог ROOT, который находится слева от слеша», а не сам слеш.

Исходные пути Unix/Linux (абсолютные, относительные, точка, точка точка)

2

Абсолютный путь - это /Users/danylo.volokh/test/test_bash_script.sh , а не /test/test_bash_script.sh . Баш сейчас прав.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .