从“源”脚本更改父脚本的工作目录

Seb*_*ebi 2 linux bash shell working-directory

我想通过包含的另一个脚本更改我的脚本的工作目录。

第一个脚本:

#!/bin/bash
pwd
source script2
pwd
Run Code Online (Sandbox Code Playgroud)

Sedond脚本:

cd ..
pwd
Run Code Online (Sandbox Code Playgroud)

结果如下:

> ./script1
/home/sebi/testdir1/testdir2  # 1st script
/home/sebi/testdir1           # 2nd script
/home/sebi/testdir1           # 1st script
Run Code Online (Sandbox Code Playgroud)

我在测试这个脚本时编辑了这个问题,它按我想要的方式工作,但是以下脚本的工作方式不同,因为下标完成执行父级与调用下标之前位于同一目录中。

#!/bin/bash
while :
do
sleep 5  

cat /home/.../shelldata.txt >> /home/.../gmodshell #logging

((source /home/..../shelldata.txt) 2>&1) | \
sed -e "s/..shellRunner.sh..line../SH/" > \
/home/..../shellFeedback.txt

echo > /home/..../shelldata.txt

done
Run Code Online (Sandbox Code Playgroud)

整个目标是使用文件访问 bash,这样我就可以将命令写入一个文件,一段时间后我在另一个文件中获得输出。

Cam*_*son 5

假设脚本 1 和 2 在同一目录中,尝试制作脚本 1:

#!/bin/bash
pwd
. ./script2
pwd
Run Code Online (Sandbox Code Playgroud)

在调用脚本之前放置点(我说的是第一个点,而不是作为您要调用的脚本的文件路径一部分的点)告诉 shell“在过程中执行以下脚本而不是生成一个新的过程。”

在第二个脚本中执行的操作(如 cd-ing 或设置变量)将在第二个脚本结束后持续存在。