移动包含可执行脚本的目录

时间:2015-10-25 12:53:42

标签: bash mv

我有一个bash脚本,除了以下一些操作之外都会执行:

mv "$currentDir" "$currentDir@backup"
mv "$tempBuild" "$currentDir"

我通过两个步骤运行我的脚本:

cd /path/to/project
./my_script.sh

我预计 $ currentDir 应始终等同于 / path / to / project 。 但是当我第二次通过添加第3步 ./ my_script.sh 运行它时,当前目录值变为 / path / to / project @ backup 即可。 我做错了什么,是否有可能改进脚本来做那些事情或者我应该改变一种方法?

此外,我通过这种方式获取当前目录:

currentScriptAbsolutePath=$(cd `dirname "${BASH_SOURCE[0]}"` && pwd)/`basename "${BASH_SOURCE[0]}"`
currentDirAbsolutePath=$(dirname $currentScriptAbsolutePath)

感谢任何帮助,并提前感谢您。

1 个答案:

答案 0 :(得分:0)

在我的工具箱中,我有这个来获取脚本路径和调用者路径。 这可以帮到你

# Set path
CALLER_PWD=$(pwd)
case "$0" in
    */*)
        SCRIPT_PWD=`dirname "$0"`
    ;;
    *)
        SCRIPT_PWD=`/bin/which "$0" | head -1`
        SCRIPT_PWD=`dirname "$SCRIPT_PWD"`
    ;;
esac

cd "$SCRIPT_PWD"
SCRIPT_PWD=$(pwd)
cd "$CALLER_PWD"