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

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

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

#!/bin/bash    

chmod +x "$pwd"/D3GO

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

решение1

При запуске 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

Вы были очень близки!

#!/bin/bash    

chmod +x D3GO

Связанный контент