Запуск скриптов из другого каталога

Довольно часто сценарий, который я хочу выполнить, не находится в моем текущем рабочем каталоге, и я не хочу его оставлять.

Является ли хорошей практикой запуск скриптов (BASH, Perl и т. Д.) Из другого каталога? Будут ли они обычно находить все, что им нужно для правильной работы?

Если да, то как лучше всего запустить «удаленный» скрипт? Это

. /path/to/script

или

sh /path/to/script

и как использовать sudo в таких случаях? Это, например, не работает:

sudo . /path/to/script
4
задан 25 November 2012 в 02:36

2 ответа

Можно назвать сценарий с помощью только целый путь без точки .:

/path/to/script

sudo также хорошо работает:

sudo /path/to/script

Они будут обычно находить весь материал, который они должны выполнить правильно?

Вы имеете в виду как, "мой сценарий найдет файлы, которые находятся в той же папке?" Это зависит Вашего кода. Например, если у Вас есть сценарий /tmp/test.sh:

#!/bin/bash
ls

При вызове его от домашней папки это будет работать ls в Вашем доме:

test@ubuntu:~:/tmp/test.sh
Desktop     Dropbox         Imagens  NetBeansProjects     Público     
Documentos  Modelos    R          Vídeos

В этой ситуации, dirname Ваш союзник:

#!/bin/bash
current=$(dirname $0)
ls $current

Выполняя его от Вашей домашней папки, он дает:

test@ubuntu:~:/tmp/test.sh
acroread_1000_1000     hiRF7yLSOD              pulse-2L9K88eMlGn7   
unity_support_test.0    clementine-art-jt5332.jpg

который является содержанием моего /tmp/ папка.

6
ответ дан 25 November 2012 в 02:36

Обычная практика * nix для пользовательских скриптов - помещать их в каталог bin. Таким образом, сценарий будет искать по умолчанию при вводе имени из командной строки.

Ваш каталог bin (бинарный) должен находиться в вашей домашней папке, поэтому полный путь будет /home/yourusername/bin. (Очевидно, измените yourusername на свое имя пользователя.)

Каталог bin должен иметь следующие разрешения, если вы запускаете ls -lh из терминала: drwxr-xr-x

По умолчанию, когда вы делаете для каталога с терминалом у вас установлены следующие разрешения: drwxrwxr-x

Единственное, что вам нужно изменить, - это разрешение группы, но я проведу вас через каждый шаг с терминала (если вы не t уже имеет корзину):

  • Откройте терминал ([Ctrl] + [Alt] + t)

  • Создайте двоичный каталог: mkdir bin

  • Теперь используйте GUI или CLI, чтобы скопировать свои сценарии в /bin.

  • Теперь нам нужно изменить некоторые разрешения, чтобы все было настроено правильно:

  • chmod -R 755 bin

  • Это позволяет владельцу (вам) читать, писать и выполнять, группам и другим - читать и выполнять сценарии. -R означает рекурсивный или установить права доступа для всех файлов в каталоге.

Дополнительную информацию о правах доступа к файлам см. В этом документе .

Теперь вы можете просто набрать myscript для выполнения ваших скриптов - вам не обязательно находиться в каталоге. Вам не нужно. / или что-нибудь еще!

Для sudo это немного по-другому, так как вам придется определить полный путь к файлу сценария.

0
ответ дан 25 November 2012 в 02:36

Другие вопросы по тегам:

Похожие вопросы: