首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >基于文件位置而不是当前工作目录的相对路径

基于文件位置而不是当前工作目录的相对路径
EN

Stack Overflow用户
提问于 2014-06-09 09:52:10
回答 2查看 139.4K关注 0票数 134

给定:

代码语言:javascript
复制
some.txt
dir
 |-cat.sh

其中cat.sh包含以下内容:

代码语言:javascript
复制
cat ../some.txt

那么,在dir中运行./cat.sh可以很好地工作,而在与dir相同级别上运行./dir/cat.sh则不行。我希望这是由于不同的工作目录造成的。有没有一种简单的方法可以使路径相对于cat.sh的位置成为../some.txt

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-09 09:55:10

您要做的是获取脚本的绝对路径(可通过${BASH_SOURCE[0]}获得),然后使用此路径在脚本的开头获取父目录和指向父目录的cd

代码语言:javascript
复制
#!/bin/bash
parent_path=$( cd "$(dirname "${BASH_SOURCE[0]}")" ; pwd -P )

cd "$parent_path"
cat ../some.text

这将使您的shell脚本独立于您从何处调用它。每次运行它时,就像在dir中运行./cat.sh一样。

请注意,此脚本仅在您直接调用脚本时才有效(即不通过符号链接),否则查找脚本的当前位置会变得有点棘手。)

票数 207
EN

Stack Overflow用户

发布于 2014-06-09 11:19:37

只有一行就行了。

代码语言:javascript
复制
cat "`dirname $0`"/../some.txt
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24112727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档