Как выполнить скрипт в каталоге, отличном от текущего?

Я попытался выполнить скрипт с помощью этой команды:

./home/user/scripts/someScript

но это не работает:

No such file or directory

Есть какие-нибудь идеи?

Начальная точка в вашей команде означает "относительно текущего каталога". Удалите его, и он будет ссылаться на "файл someScript в каталоге /home/user/scripts:

/home/user/scripts/someScript

Если вы получаете сообщение "Отказано в разрешении", это либо потому, что у вас недостаточно разрешений для доступа к файлу в каталоге других пользователей, либо потому, что файл не является исполняемым. Чтобы сделать его исполняемым, запустите:

chmod +x /home/user/scripts/someScript

Если вашему скрипту необходимо получить доступ к ресурсам в той же папке, из которой он запускается, и вы указали его в качестве относительных путей, то ваш скрипт завершит работу.

Я всегда добавляю cd $(dirname $0) в начало моего скрипта, так что папка, содержащая скрипт, будет корневой папкой.

Удалите .

Если вы сделаете скрипт исполняемым с помощью chmod 755 <nameofscript> чтобы запустить его, вам нужно только ввести путь к скрипту.

Когда ты увидишь ./script при использовании он сообщает оболочке, что скрипт находится в том же каталоге, в котором вы его выполняете. Чтобы использовать полный путь, вы вводите sh /home/user/scripts/someScript.

Я перепробовал много способов, и это хорошо работает со мной:

(cd ~/user/scripts/; ./someScript)

Я получаю некоторую помощь от этот ответ.

Очевидно, что такого файла или каталога не существует. Таким образом, вы указываете неправильный путь. Точка там не означает “выполнить”. Это всего лишь часть пути. В оболочке вы обычно вводите либо файлы для выполнения, либо команды (которые на самом деле также являются файлами) :slight_smile:

избавьтесь от этого начального периода и попробуйте еще раз. В качестве альтернативы также будет работать ~/scripts/someScript. также имейте в виду `qoutes" и программы exec ($man exec)