我有一个顶级bash脚本,说ScriptA,和一个子目录DY中的一些其他bash脚本,它与脚本A处于同一级别。假设其他bash脚本在DY中是ScriptB和ScriptC。 ScriptA将在某个时间点提供ScriptB和ScriptC,并且我希望所有的脚本都能够在各自的目录中运行。这里有一个例子:将工作目录更改为当前脚本的目录
SCRIPTA:
#!/bin/bash
touch script_a_1.txt
source DY/ScriptB.sh
touch script_a_2.txt
source DY/ScriptC.sh
ScriptB:
#!/bin/bash
touch script_b_file.txt
ScriptC:
#!/bin/bash
touch script_c_file.txt
所以script_a_1.txt和script_a_2.txt应在目录SCRIPTA是in和script_b_file.txt和script_c_file.txt应该在子目录DY中。
我试图把
cd "$(dirname "${BASH_SOURCE[0]}")" && pwd
在ScriptB和ScriptC的顶部和SCRIPTA当它来自ScriptB回来,但回到SCRIPTA时,工作目录仍处于DY而不是哪里SCRIPTA是英寸
有关如何完成此任何想法?
EDIT
奖金如果溶液还可以在子进程运行脚本时处理的情况下,即 SCRIPTA:
#!/bin/bash
touch script_a_1.txt
source DY/ScriptB.sh
touch script_a_2.txt
DY/./ScriptC.sh
*也固定在初始SCRIPTA示例不采购ScriptC
除OP之外的所有清洁是而不是像你在这里展示的那样在子进程中运行。请修复(+1任一方式)。 –
@MadPhysicist好点,刚刚修复。 – yinnonsanders
工程就像一个魅力。这样做有什么警告吗? – bitscuit