[英]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.sh
或bash 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.