Как сделать сценарий, который сделает другой сценарий в той же папке исполняемым? Я не хочу беспокоиться о пути, так как он будет в том же каталоге. Так что должно быть что-то вроде (я пытаюсь сделать исполняемый скрипт D3GO):
#!/bin/bash
chmod +x "$pwd"/D3GO
Я очень новичок в скриптах, поэтому, пожалуйста, не смейтесь: D Спасибо!
Когда Вы работаете bash
сценарий, весь, он - команды, выполненные в каталоге, где сценарий вызывается от, включая pwd
. Например:
#!/bin/bash
pwd
при выполнении этого от /whatever/path
это отобразится /whatever/path
, неважно, куда сценарий помещается.
, Если Вы хотите воздействовать на файлы в каталоге, откуда Вы выполняете сценарий, можно опустить pwd
как это:
chmod +x D3GO
Это будет интерпретироваться как chmod +x /whatever/path/D3GO
при выполнении его от /whatever/path
, неважно, куда сценарий на самом деле помещается.
Для работы в каталоге, где сценарий расположен можно использовать $BASH_SOURCE
переменная. Это - массив, и это - первый элемент, путь к самому сценарию (т.е. /script/directory/myscript.sh
). Можно объединить это с эти dirname
команда для получения просто каталога:
chmod +x `dirname ${BASH_SOURCE[0]}`/D3GO
Это будет искать D3GO
в каталоге, куда этот сценарий помещается вместо того, откуда это вызывается. (Благодаря @muru для указания на мою ошибку.)
Вы были супер близкий!
#!/bin/bash
chmod +x D3GO