我有一些.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
等。我显然错过了一些非常简单和基本的。
答案1
它就在最上面:
cd /
更改到根目录。另外,第 4 行的斜线需要删除。