我最近一直在研究一些bash脚本,我开始想知道应该如何设置更大的脚本。
bash脚本总是在当前目录中运行,因此要使用source
,您需要源脚本的绝对路径。
我看到了this post,但对于我希望成为常见用例的内容来说似乎过于复杂。
是否有惯用的方法在与运行脚本相同的目录中提供脚本?
答案 0 :(得分:3)
您可以使用dirname
和$0
来确定当前运行的脚本所在的位置(此处doit2.sh是与原始脚本位于同一目录中的脚本):
. $(dirname $0)/doit2.sh
答案 1 :(得分:2)
没有36,000个解决方案:
1)绝对路径:
source /absolute_path/script.sh # sourcing a script
. /absolute_path/script.sh # sourcing a script
/absolute_path/script.sh # executing a script
2)相对路径:
./script.sh # when script.sh is in the current directory
./dir/script.sh # when script.sh is in the directory 'dir' which is in the current directory
../script.sh # when script.sh is in the parent directory
您也可以将source
或. script.sh
与相对路径一起使用。
3)使用别名:
echo "alias script='/absolute_path/script.sh'" >> ~/.bashrc
source ~/.bashrc
script # executing script.sh
4)添加到PATH:
echo "export PATH=$PATH:/absolute_path/script.sh" >> ~/.bashrc
source ~/.bashrc
script.sh # executing script.sh
要了解采购脚本和执行脚本之间的区别,请参阅此subject。