Довольно часто сценарий, который я хочу выполнить, не находится в моем текущем рабочем каталоге, и я не хочу его оставлять.
Является ли хорошей практикой запуск скриптов (BASH, Perl и т. Д.) Из другого каталога? Будут ли они обычно находить все, что им нужно для правильной работы?
Если да, то как лучше всего запустить «удаленный» скрипт? Это
. /path/to/script
или
sh /path/to/script
и как использовать sudo
в таких случаях? Это, например, не работает:
sudo . /path/to/script
Можно назвать сценарий с помощью только целый путь без точки .
:
/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/
папка.
Обычная практика * 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 это немного по-другому, так как вам придется определить полный путь к файлу сценария.