繁体   English   中英

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

[英]Execute bash script from one into another directory?

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

我从您的评论中了解到,您希望脚本在执行时使其当前工作目录位于A/B/C 好的,所以您进入目录A:

cd A

然后从那里执行script.sh

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

这样做是启动一个子shell,在该子shell中,您首先要更改要在其中执行脚本的目录,然后执行该脚本。 将其作为子shell可以防止它弄乱您的交互式会话的当前目录。

如果要在后台运行长时间运行的脚本,也可以像其他任何命令一样,在末尾添加&

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

cd /A
bash B/C/somescript.sh

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

(即somescript.sh ,没有路径)

如果要访问脚本存储的目录,可以在脚本内使用以下代码:

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

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

使脚本在C执行的简单方法是简单地位于该文件夹中。

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

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

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

听起来这正是您要寻找的!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM