У меня есть файл оболочки, который извлекается из github и встроен в zip с помощью TeamCity.
Обычно он редактируется и помещается в github с компьютера Windows.
Мне нужно, чтобы этот сценарий оболочки выполнялся после распаковки. Как мне это сделать? В настоящее время мне нужно сделать chmod + x blah.sh
#! /bin/bash
#First argument ($1) would be the name of the file to be unzipped
#Second argument ($2) would be where to unzip the files to (absolute path)
unzip $1 -d $2
find $2 -name *.sh -print0 | xargs -0 chmod +x
Это будет работать до тех пор, пока файлы, которые вы хотите сделать исполняемыми, всегда будут иметь формат * .sh. В противном случае всегда можно было бы добавить третий аргумент ($ 3) и заменить его на * .sh, но тогда вам всегда нужно было бы вводить имя файла, который будет исполняемым для каждого архива.
Самым быстрым и простым решением, вероятно, было бы использование сценария оболочки, который обращается к вашим разрешениям после запуска распаковки.
Вы должны создать архив с помощью ZIP-архива Unix, чтобы сохранить атрибуты Unix.
Какую оболочку вы используете? Я знаю, что в bash вы можете определять свои собственные команды (через псевдоним), например, как только я создал настраиваемую команду, которую я назвал cdsee, и для нее потребовался один параметр (каталог) и был записан cd, затем немедленно ls -lah. очень упростил мою работу, так как я сразу увидел содержимое указанной папки.
Точно так же должно быть возможно и даже легко создать команду, которая запускала бы команду unzip, а затем сразу chmod + x.
К сожалению, сейчас я ускользаю от того, как использовать аргументы. Но самым простым ответом было бы использование Linux-машины для исходного zip-задания или создание вашей собственной команды / псевдонима для автоматического выполнения chmod.