有没有更简单的方法来做到这一点?
#!/bin/ksh
THIS_SCRIPT=$(/usr/bin/readlink -f $(echo $0 | /bin/sed "s,^[^/],$PWD/&,"))
echo $THIS_SCRIPT
我被困在使用ksh
但更喜欢一个适用于的解决方案bash
也是(我认为确实如此)。
条目 #28在 bash 常见问题解答中:
如何确定脚本的位置?我想从同一个地方读取一些配置文件。
出现此问题的主要原因有两个:要么您想要外部化脚本的数据或配置,并且需要一种方法来查找这些外部资源,要么您的脚本旨在对某种捆绑包(例如构建脚本),并且需要找到要采取行动的资源。
重要的是要认识到,在一般情况下,这个问题没有解决方案。您可能听说过的任何方法以及下面将详细介绍的任何方法都存在缺陷,并且仅在特定情况下有效。首先也是最重要的,尝试通过不依赖脚本的位置来完全避免该问题!
...
使用 BASH_SOURCE
BASH_SOURCE 内部 bash 变量实际上是一个路径名数组。如果将其扩展为一个简单的字符串,例如“$BASH_SOURCE”,您将获得第一个元素,它是当前正在执行的函数或脚本的路径名。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)