Как сделать скрипт, который сделает исполняемым другой скрипт в той же папке? Я не хочу беспокоиться о пути, так как он будет в том же каталоге. Так что это должно быть что-то вроде (я пытаюсь сделать исполняемым скрипт 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