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