Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >bash shell:获取当前脚本的绝对路径(pwd/readlink)

bash shell:获取当前脚本的绝对路径(pwd/readlink)

作者头像
10km
发布于 2019-05-25 14:02:57
发布于 2019-05-25 14:02:57
8.9K00
代码可运行
举报
文章被收录于专栏:10km的专栏10km的专栏
运行总次数:0
代码可运行

版权声明:本文为博主原创文章,转载请注明源地址。 https://cloud.tencent.com/developer/article/1433580

有时候,我们需要知道当前执行的输出shell脚本的所在绝对路径,可以用dirname实现。

我们知道 dirname 可以获取一个文件所在的路径,dirname的用处是:

输出已经去除了尾部的”/”字符部分的名称;如果名称中不包含”/”, 则显示”.”(表示当前目录)。

下面是dirname的命令行说明:

从上面的描述可知道,直接从dirname返回的未必是绝对路径,取决于提供给dirname的参数是否是绝对路径。

所以下面这样的代码中SHELL_FOLDER中不一定是绝对路径

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SHELL_FOLDER=$(dirname "$0")

需要用cd和pwd命令配合获取脚本所在绝对路径,正确的写法是这样的,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SHELL_FOLDER=$(cd "$(dirname "$0")";pwd)

如果你觉得上面的写法比较麻烦,还有一个方式获取脚本的绝对路径,就是借助readlink命令,下面是readlink的命令行说明:

所以用readlink命令我们可以直接获取$0参数的全路径文件名,然后再用dirname获取其所在的绝对路径:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SHELL_FOLDER=$(dirname $(readlink -f "$0"))

参考:

http://my.oschina.net/leejun2005/blog/150662

http://blog.csdn.net/zz198808/article/details/9319479

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016年07月14日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Shell 获取当前脚本的绝对路径
请注意:本文编写于 2020-04-26,其中某些信息可能已经失去时效性。 1. dirname + pwd root_absolute_dir=$(cd "$(dirname "$0")";pwd) 2. readlink root_absolute_dir=$(dirname $(readlink -f "$0")) 注意 macOS 中使用 readlink -f 命令会有如下报错: readlink: illegal option -- f usage: readlink [-n] [file
Ryoma
2022/04/02
1.4K0
如何获取当前正在执行脚本的绝对路径
刚开始我还以为需要把dirname改成对应的路径,同时又不解$0在这里是表达什么含义。
小汪Waud
2023/02/03
1.8K0
如何获取当前正在执行脚本的绝对路径
shell 当前工作目录的绝对路径
问题就出在最后那句,本意我是希望把/home/lcd/something 复制到我脚本的执行目录。 假设我的脚本目录在/home/lcd/shell/下,
orientlu
2018/09/13
3K0
shell获取当前工作目录绝对路径
一般我们写Shell脚本的时候,都倾向使用绝对路径,这样无论脚本在什么目录执行,都应该起到相同的效果,但是有些时候,我们设计一个软件包中的工具脚本或者远程调用某个脚本时,可能使用相对路径更加灵活一点,因为你不知道用户会在哪个目录执行你的程序,于是问题就来了,如何获取当前正在执行脚本的绝对路径? 常见的一种误区,是使用 pwd 命令,该命令的作用是“print name of current/working directory”,这才是此命令的真实含义,当前的工作目录,这里没有任何意思说明,这个目录就是脚本存
Java学习123
2018/05/16
11.8K0
BASH_SOURCE 用法
参考 bash少见的用法 http://blog.csdn.net/wonderisland/article/details/22892759。
sanmutongzi
2020/03/04
7600
Python RPC 远程调用脚本之 RPyC 实践
最近有个监控需求,需要远程执行集群每个节点上的脚本,并获取脚本执行结果,为了安全起见不需要账号密码登陆节点主机,要求只需要调用远程脚本模块的方法就能实现。 总结下python进行远程调用脚本方法: 登陆主机执行脚本,python模块支持如 pssh、pexpect、paramiko、ansible 以远程方法调用(不需要登陆主机),python模块 rpyc,支持分布式 socket 方式,稍显复杂,需要熟悉网络协议,起点比较高 rpyc支持远程调用、分布式计算,以较少代码量实现复杂socket编程,本文主
用户1177713
2018/02/24
3.1K0
Python RPC 远程调用脚本之 RPyC 实践
实例快速上手shell脚本
昨天老师给了宗林师兄任务,让我跑一个机器翻译的程序。我看了看就是跑shell脚本。刚开始一看。。我的天。。好长的代码,但是觉得这个时候就更不能怕,得迎难而上,趁这个机会,把shell脚本好好弄弄,以后
zenRRan
2018/04/10
1.1K0
实例快速上手shell脚本
mongodb shell 运行js脚本的四种方式
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wershest/article/details/72898393
拓荒者
2019/06/16
3.2K0
一篇精辟的Linux必知必会​,推荐收藏
SamGor:叉烧哥最近有篇关于linux的学习笔记,看完了觉得写得十分精辟,对于尚未使用linux的同学来说简直就是福音~推荐给大家学习学习。
Sam Gor
2019/10/15
8650
cmake:shell(bat,sh) 脚本方式生成Makefile
版权声明:本文为博主原创文章,转载请注明源地址。 https://blog.csdn.net/10km/article/details/50444643
10km
2019/05/25
2.1K0
如何从Bash脚本本身中获得其所在的目录
我想使用Bash脚本作为另一个应用程序的启动器。我想把工作目录改为Bash脚本所在的目录,以便我可以对该目录下的文件进行操作,像这样:
程序熵
2023/11/09
5230
如何从Bash脚本本身中获得其所在的目录
minigui 3.2.0:基于miniStudio应用TrueType字体的过程(2)-字体边缘锯齿,字库剪裁
版权声明:本文为博主原创文章,转载请注明源地址。 https://blog.csdn.net/10km/article/details/81114067
10km
2019/05/26
1.3K0
「问答」解决jar包运行时相对路径问题
这个写法本身并没有问题,直接运行代码可是OK的,可以生成与代码平级的一个text.txt文件。
毛大姑娘
2020/09/10
3.4K0
shell-编写shell脚本所需的基础语法
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
洋仔聊编程
2019/09/18
9190
shell-编写shell脚本所需的基础语法
Linux: Shell脚本中处理文件路径参数,兼容相对路径与绝对路径
在编写Shell脚本时,处理文件路径参数是一个常见的需求。路径参数可能是相对路径或绝对路径,如何编写一个兼容两者的Shell脚本并进行路径检查,是本文的主要内容。
运维开发王义杰
2024/06/11
9190
Linux: Shell脚本中处理文件路径参数,兼容相对路径与绝对路径
解决:如何写一个shell脚本(脚本名称:xsync,也称:xsync命令):实现多个电脑或者虚拟机之间的文件同步?
注意:第五步循环rsync命令IP地址那一段,要结合自己的实际情况,去更改才行;rsync命令使用方法,参考上文所述
全栈程序员站长
2022/09/01
1.1K0
解决:如何写一个shell脚本(脚本名称:xsync,也称:xsync命令):实现多个电脑或者虚拟机之间的文件同步?
Linux探秘之旅:透彻理解路径、命令与系统概念
https://blog.csdn.net/Srlua/article/details/136079391#comments_31253141
Srlua
2024/03/01
1480
Linux探秘之旅:透彻理解路径、命令与系统概念
Hive 常见问题与技巧【Updating】
1Q: 是否有像类似于phpmyadmin一样的hive查询客户端,能以界面的方式查询hive语句和导出数据 A: 有的,客户端的话可以使用squirrel来连接hive,squirrel是一个通用的数据库查询客户端,还有有一个开源项目phphiveadmin也不错, web方式访问hive,这里也有一个hive web client(https://github.com/lalaguozhe/hiveweb-1) 2Q: 执行语句时候,能否控制reducer的个数 A: 可以在执行hiv
用户1177713
2018/02/24
1.6K0
shell:获取git当前分支或tag
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
10km
2019/09/06
12.4K0
编写 Shell 脚本的最佳实践
由于工作需要,最近重新开始拾掇 shell 脚本。虽然绝大部分命令自己平时也经常使用,但是在写成脚本的时候总觉得写的很难看。而且当我在看其他人写的脚本的时候,总觉得难以阅读。毕竟 shell 脚本这个东西不算是正经的编程语言,他更像是一个工具,用来杂糅不同的程序供我们调用。因此很多人在写的时候也是想到哪里写到哪里,基本上都像是一段超长的 main 函数,不忍直视。同时,由于历史原因,shell 有很多不同的版本,而且也有很多有相同功能的命令需要我们进行取舍,以至于代码的规范很难统一。
用户6543014
2019/10/25
1.1K0
编写 Shell 脚本的最佳实践
推荐阅读
相关推荐
Shell 获取当前脚本的绝对路径
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验