我有3个目录: / A / B / C和C目录中的1个bash脚本。 如何从A到C目录中执行此bash脚本。
答案 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.sh
或bash B/C/script.sh
或完整路径/A/B/C/script.sh
。如果您的意思是希望该脚本始终有效,那么您需要将其添加到PATH
变量中。
答案 3 :(得分:0)
每当我想确保脚本可以访问其本地文件夹中的文件时,我会把它放在脚本顶部附近:
# Ensure working directory is local to this script
cd "$(dirname "$0")"
听起来这正是你正在寻找的东西!