如何编写一个脚本,使同一文件夹中的另一个脚本可执行?

如何编写一个脚本,使同一文件夹中的另一个脚本可执行?

如何编写一个脚本,使同一文件夹中的另一个脚本可执行?我不想担心路径,因为它将位于同一目录中。所以它应该是这样的(我正在尝试使 D3GO 脚本可执行):

#!/bin/bash    

chmod +x "$pwd"/D3GO

我对脚本还很陌生,所以请不要笑:D 谢谢!

答案1

当你运行一个bash脚本时,它的所有命令都会在调用该脚本的目录中运行,包括pwd。例如:

#!/bin/bash

pwd

如果从 运行它,无论脚本放在何处,/whatever/path它都会显示。/whatever/path

如果您想对运行脚本的目录中的文件进行操作,您可以pwd像这样省略:

chmod +x D3GO

不管脚本实际放在哪儿,它都将被解释为chmod +x /whatever/path/D3GO您从 运行它一样。/whatever/path

要在脚本所在的目录中进行操作,可以使用变量$BASH_SOURCE。它是一个数组,它的第一个元素是脚本本身的路径(即/script/directory/myscript.sh)。您可以将其与命令结合使用dirname以仅获取目录:

chmod +x `dirname ${BASH_SOURCE[0]}`/D3GO

这将查找D3GO此脚本所在的目录,而不是调用它的目录。(感谢@muru 指出我的错误。)

答案2

你太接近了!

#!/bin/bash    

chmod +x D3GO

相关内容