bash – 引用相对于执行脚本的文件
在我编写的bash脚本中,我使用source包含在配置文件中定义的变量。要执行的脚本是act.sh,而要提供的脚本是act.conf.sh,因此在act.sh中我有:
source act.conf.sh 然而,这仅在包含它的目录中运行act.sh时有效,因为act.conf.sh引用放置在工作目录下的文件。有没有解决方案,使其引用相对于执行脚本的文件而不调用cd?谢谢。
参见:
BASH FAQ entry #28: “How do I determine the location of my script? I want to read some config files from the same place.”
任何解决方案都不会在100%的时间工作:
如果你需要编写一个非常可重用的工具,那么将正确的路径作为你的脚本的参数将是最可靠的方法。 假设你的脚本只能从某些shell中运行,并且只需要一点灵活性,你可以放松一些这种偏执。看看你的选择仍然是好的。人们使用的常见模式是特别有问题的。 特别是,FAQ建议避免使用非常常用的$ 0变量:
作为替代,您可以使用$ BASH_SOURCE。这样的东西: source "${BASH_SOURCE%/*}/act.conf.sh" 这个解决方案也有一些注意事项。查看FAQ页面,看看不同解决方案之间的权衡。他们似乎建议cd与$ BASH_SOURCE结合使用的情况下,它将为您工作,因为你得到一个方便的错误条件,当它无法正常扩展。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 【数据结构】图
- @Input in Angular 4
- 免费的天气预报webservice接口
- bash – 如何在tail -f命令后继续运行脚本
- webservice Server Error in '/' Application 本
- angular – 类接口函数定义 – TypeError:Object不支持属性
- WebService在JAVA中的部署(有图解)
- WebService Caused by: javax.wsdl.WSDLException: WSDLExc
- 完美解决ntp的错误问题no server suitable for synchroniza
- scala – 如何计算Spark中12个月内每个客户滑动1个月的订单