从一个目录执行bash脚本到另一个目录?

时间:2013-12-05 16:59:41

标签: linux bash

我有3个目录: / A / B / C和C目录中的1个bash脚本。 如何从A到C目录中执行此bash脚本。

4 个答案:

答案 0 :(得分:4)

我从您的评论中了解到,您希望脚本在执行时将其当前工作目录放在A/B/C中。好的,你进入目录A:

cd A

然后从那里执行script.sh

(cd B/C; ./script.sh)

这样做是启动一个子shell,在该子shell中首先更改为希望脚本执行的目录,然后执行脚本。将它作为子shell放置会阻止它弄乱交互式会话的当前目录。

如果它是一个长时间运行的脚本,你想保留在后台,你也可以像其他任何命令一样在最后添加&

答案 1 :(得分:0)

转到A,然后通过提供路径来运行脚本:

cd /A
bash B/C/somescript.sh

您还可以将C添加到PATH变量中,使其可以从任何地方运行

(即somescript.sh,没有路径)

如果你想访问脚本存储的目录,在脚本中,你可以使用这个单行:

DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"

或只是dirname。取自this线程。那里有更多的建议。

让您的脚本在C内执行的简单方法就是在该文件夹中。

答案 2 :(得分:0)

假设/A/B/C/script.sh是脚本,如果您在/A,则输入./B/C/script.shbash B/C/script.sh或完整路径/A/B/C/script.sh 。如果您的意思是希望该脚本始终有效,那么您需要将其添加到PATH变量中。

答案 3 :(得分:0)

每当我想确保脚本可以访问其本地文件夹中的文件时,我会把它放在脚本顶部附近:

# Ensure working directory is local to this script
cd "$(dirname "$0")"

听起来这正是你正在寻找的东西!