У меня есть несколько .sh
скриптов bash, которые создают несколько каталогов, загружают некоторые исходные файлы через 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
и т. Д. Я, очевидно, упускаю некоторые очень простые и основные.
Справа вверху: cd /
переходит в корневой каталог. Кроме того, косая черта в строке 4 должна быть удалена.