Linux Shell脚本如何获取当前路径

 更新时间:2025年11月14日 09:14:47   作者:70年代的生猛海鲜  
本文介绍了在脚本中获取当前运行目录的方法,通过使用`dirname $0`、`cd $(dirname $0)`和`pwd`命令,可以方便地获取脚本的绝对路径,文中还提供了一个测试示例,验证了该方法的有效性,此外,作者还提到直接使用`pwd`命令也是一种简单有效的获取当前目录的方法

1、使用场景

我们的脚本经常被放置到不同层次的目录之中,有人喜欢放到/opt, 有人喜欢放到/home/myname,这是不可控的。

自动化部署工作中,经常要移动、拷贝文件,而获取当前脚本运行目录,才能方便的操控相对路径内的文件。

本文就给出一种在脚本中获知当前程序运行目录的办法。

2、原理

用到的函数:

  • dirname $0:获取当前脚本所在的绝对目录
  • cd $(dirname $0):进入这个目录
  • pwd:显示切换后脚本所在工作目录

结合起来,在脚本中使用下面的语句,就可以得到脚本的绝对路径。

script_dir=$(cd $(dirname $0);pwd)

3、测试

3.1、测试原理

建立一个多重目录,在里面新建脚本文件test_path.sh,脚本中使用上面的思路打印出路径信息,期待运行该脚本,能显示出脚本所放置的绝对路径。

[root@others ~]# mkdir -p /tmp/1//2/3/4/5
[root@others ~]# cd /tmp/1/2/3/4/5
[root@others 5]# pwd
/tmp/1/2/3/4/5

[root@others 5]# vim test_path.sh
#!/bin/bash
CUR_PATH=$(cd $(dirname $0) ; pwd)
echo ${CUR_PATH}

3.2、测试结果

test_path.sh运行效果如下,正确打印出脚本所在的绝对路径,达到预期。

[root@others 5]# sh test_path.sh 
/tmp/1/2/3/4/5

4、其它

以上方法和实现是我在网上找到的,其实我最直观的感觉,直接在脚本中用pwd也行,简单测试下,也是没有问题的。

如下:

脚本文件1.sh的内容如下:

#!/bin/bash
CUR_PATH=$(pwd)
echo $CUR_PATH

测试结果达到预期,如下:

[root@others 5]# vim 1.sh
[root@others 5]# sh 1.sh
/tmp/1/2/3/4/5

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Linux I2C驱动注册详解

    Linux I2C驱动注册详解

    文章介绍了I2C驱动注册机制,核心是structi2c_driver结构体,需填充name、probe和id_table字段,name用于显示驱动名称,probe在设备匹配后调用(无论设备是否存在),通过设备树或静态注册识别设备,最终触发驱动探针流程
    2025-07-07
  • 如何使用shell在多服务器上批量操作

    如何使用shell在多服务器上批量操作

    日常工作中,我们常需要同时在多台服务器上执行同样的命令,如对比日志、检查服务等。这就需要我们有服务器批量操作的能力,我们可以借用 ssh公钥登陆的能力,方便地实现在多个服务器上批量执行命令。
    2021-05-05
  • Linux系统命令中tree命令详解

    Linux系统命令中tree命令详解

    tree命令以树状图列出文件目录结构。不过某些Linux上(Centos 6.4)没有tree命令,下面这篇文章将先进行介绍安装方法,然后详细介绍tree命令的使用,有需要的朋友们可以参考借鉴,下面跟着小编来一起看看吧。
    2016-12-12
  • 最完的htaccess文件用法收集整理

    最完的htaccess文件用法收集整理

    最完的htaccess文件用法收集,这篇文章确实很详细,需要的朋友可以参考下
    2012-05-05
  • 一文详解Linux系统下文件操作相关的系统调用

    一文详解Linux系统下文件操作相关的系统调用

    在Linux系统中,文件操作是程序开发中不可或缺的一部分,Linux提供了丰富的系统调用来实现文件的读写、打开、关闭以及控制等功能,本文将详细阐述Linux系统中文件操作相关的系统调用,需要的朋友可以参考下
    2025-11-11
  • 详解Linux索引节点inode

    详解Linux索引节点inode

    这篇文章主要介绍了Linux索引节点inode的相关资料,帮助大家更好的理解和学习Linux,感兴趣的朋友可以了解下
    2020-08-08
  • linux中的分号&&和&,|和||说明与用法

    linux中的分号&&和&,|和||说明与用法

    在用linux命令时候,我们可以一行执行多条命令或者有条件的执行下一条命令,下面我们讲解一下linux命令分号&&和&,|和||的用法
    2018-03-03
  • Linux系统中sudo命令的十个技巧总结

    Linux系统中sudo命令的十个技巧总结

    Linux 下使用Sudo 命令,可以让普通用户也能执行一些或者全部的root命令,下面这篇文章主要给大家介绍了关于Linux系统中sudo命令的十个技巧,需要的朋友可以参考借鉴,下面来一起看看吧。
    2018-04-04
  • 关于crontab定时任务命令解读

    关于crontab定时任务命令解读

    这篇文章主要介绍了关于crontab定时任务命令的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • 详解linux下安装python3环境

    详解linux下安装python3环境

    这篇文章主要介绍了详解linux下安装python环境,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03

最新评论