У меня есть некоторые скрипты bash .sh, которые создают некоторые каталоги, загружают некоторые исходные файлы через SVN и так далее.
Скрипты работают хорошо, но меня раздражает, что они выполняют действие в filesystem/*, а не в wwww. Если они создают каталог типа /data, он создается как filesystem/data, а не www/path/data.
Я попытался запустить скрипты из подкаталогов, например
wwww/install/sh
, но все действия все еще выполняются в filesystem/*. Я также пытался работать с ./, не повезло.
Я всегда могу скопировать сгенерированную файловую структуру с filesystem/ на www, но мне очень хотелось бы знать, как я могу заставить bash выполнить там, где он есть.
Не существует жесткосвязанных ссылок, указывающих на файловую систему, один из файлов .sh выглядит так:
#!/bin/sh
cd /
mkdir data
cd /data
svn checkout <path to svn> mb32
cd mb32
mv www/htaccess.txt www/.htaccess
INSTALL_PATH=`pwd`
INSTALL_PATH=$INSTALL_PATH"/"
to_replace="#php_value auto_prepend_file"
replace_by="php_value auto_prepend_file"
eval sed -i \'s/$to_replace/$replace_by/\' www/.htaccess
to_replace="/my/root/path/"
replace_by=$INSTALL_PATH
args="-i 's|$to_replace|$replace_by|' www/.htaccess"
eval sed $args
cp www/.htaccess ImageServer/
eval sed -i 's/app.server.php/image.server.php/g' ImageServer/.htaccess
echo "Changing permissions to configuration and log..."
sudo chmod -R 775 configuration
sudo chmod -R 775 log
echo "Done"
Когда он запускается с терминала, например, из www/a/test, он настаивает на создании filesystem/data и загрузки на filesystem/data/mb32. Я хотел бы, чтобы он загрузился в www/install/data и т. Д. Я, очевидно, пропустил некоторые очень простые и простые.