首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从脚本内部获取Bash脚本的源目录?

如何从脚本内部获取Bash脚本的源目录?
EN

Stack Overflow用户
提问于 2008-09-13 04:39:57
回答 59查看 2.1M关注 0票数 5.6K

如何在Bash脚本中获取该脚本所在目录的路径?

我想使用Bash脚本作为另一个应用程序的启动器。我想将工作目录更改为Bash脚本所在的目录,这样我就可以对该目录中的文件进行操作,如下所示:

代码语言:javascript
复制
$ ./application
EN

回答 59

Stack Overflow用户

发布于 2008-09-12 20:49:29

使用dirname "$0"

代码语言:javascript
复制
#!/bin/bash
echo "The script you are running has basename `basename "$0"`, dirname `dirname "$0"`"
echo "The present working directory is `pwd`"

如果不是从脚本所在的目录运行脚本,则仅使用pwd将不起作用。

代码语言:javascript
复制
[matt@server1 ~]$ pwd
/home/matt
[matt@server1 ~]$ ./test2.sh
The script you are running has basename test2.sh, dirname .
The present working directory is /home/matt
[matt@server1 ~]$ cd /tmp
[matt@server1 tmp]$ ~/test2.sh
The script you are running has basename test2.sh, dirname /home/matt
The present working directory is /tmp
票数 1.1K
EN

Stack Overflow用户

发布于 2008-09-12 20:50:56

您可以使用$BASH_SOURCE

代码语言:javascript
复制
#!/bin/bash

scriptdir=`dirname "$BASH_SOURCE"`

请注意,您需要使用#!/bin/bash而不是#!/bin/sh,因为它是一个Bash扩展。

票数 125
EN

Stack Overflow用户

发布于 2008-12-03 12:57:40

简短的回答:

代码语言:javascript
复制
`dirname $0`

或(preferably):

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

https://stackoverflow.com/questions/59895

复制
相关文章

相似问题

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