Как сделать скрипт, который сделает другой скрипт в той же папке исполняемым?

Как сделать сценарий, который сделает другой сценарий в той же папке исполняемым? Я не хочу беспокоиться о пути, так как он будет в том же каталоге. Так что должно быть что-то вроде (я пытаюсь сделать исполняемый скрипт D3GO):

#!/bin/bash    

chmod +x "$pwd"/D3GO

Я очень новичок в скриптах, поэтому, пожалуйста, не смейтесь: D Спасибо!

0
задан 8 July 2014 в 22:09

2 ответа

Когда Вы работаете 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 для указания на мою ошибку.)

2
ответ дан 8 July 2014 в 22:09

Вы были супер близкий!

#!/bin/bash    

chmod +x D3GO
1
ответ дан 8 July 2014 в 22:09

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

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