shell获取当前执行脚本的路径和文件名的方法

$0:传递到脚本的第一个参数
${BASH_SOURCE}:当前执行脚本的文件名
${BASH_SOURCE[0]}:等价于${BASH_SOURCE},当前执行脚本的文件名
$(dirname path):获取path中的路径,并删除最后的文件名
$(realpath file):获取file的绝对路径

其中$0可用于sh或bash,${BASH_SOURCE}只可用于bash。
但是当脚本以source方式执行时,$0失效,此时只能使用${BASH_SOURCE}

示例,脚本存放路径为/tmp/aaa

/tmp/aaa# tree /tmp/aaa/
/tmp/aaa/
`-- test.sh
#!/bin/bashecho $0
echo ${BASH_SOURCE}
echo ${BASH_SOURCE[0]}echo $(dirname $(realpath $0))
echo $(dirname $(realpath ${BASH_SOURCE}))
echo $(dirname $(realpath ${BASH_SOURCE[0]}))

以./方式执行的输出

/tmp/aaa# ./test.sh
./test.sh
./test.sh
./test.sh
/tmp/aaa
/tmp/aaa
/tmp/aaa

以source 方式执行的输出

/tmp/aaa# source test.sh
-bash
test.sh
test.sh
realpath: invalid option -- 'b'
Try 'realpath --help' for more information.
dirname: missing operand
Try 'dirname --help' for more information./tmp/aaa
/tmp/aaa

shell获取当前执行脚本的路径和文件名相关推荐

  1. shell获取当前执行脚本的路径

    filepath=$(cd "$(dirname "$0")"; pwd) 脚本文件的绝对路径存在了环境变量filepath中,可以用 echo $filepa ...

  2. linux shell获取当前执行路径

    linux shell 获取当前正在执行脚本的绝对路径 basepath=$(cd `dirname $0`; pwd) project_path=$(cd `dirname $0`; pwd) pr ...

  3. Shell获取某个文件夹下的所有文件名(含文件夹)

    2019独角兽企业重金招聘Python工程师标准>>> 1. 获取某个文件夹下的所有文件名(含文件夹),并显示 #!/bin/sh #============ get the fil ...

  4. C#调用Power Shell 管理Office365 执行脚本时遇到的问题

    Power Shell管理Office参考http://www.mamicode.com/info-detail-494553.html C#调用Power Shell 参考 https://www. ...

  5. php 命令执行脚本文件路径,php命令行(cli)下执行PHP脚本文件的相对路径的问题解决方法...

    在php命令行下执行.php文件时,执行环境的工作目录(getcwd( ))是php命令程序(php.exe)所在目录,所以如果想在文件内使用相对路径时,要先切换当前的工作目录才行. 小测试程序: $ ...

  6. shell 获取命令执行结果_java高并发系列 第31天:获取线程执行结果,这6种方法你都知道?...

    这是java高并发系列第31篇. 环境:jdk1.8. java高并发系列已经学了不少东西了,本篇文章,我们用前面学的知识来实现一个需求: 在一个线程中需要获取其他线程的执行结果,能想到几种方式?各有 ...

  7. java执行python路径_如何在Python中获取当前执行文件的路径?

    您无法直接确定正在执行的主脚本的位置 . 毕竟,有时脚本根本不是来自文件 . 例如,它可以来自交互式解释器或仅存储在存储器中的动态生成的代码 . 但是,您可以可靠地确定模块的位置,因为模块始终从文件加 ...

  8. java获取当前执行文件的路径

    需要知道执行jar包时,jar包所在的路径. 开始使用了 p.getClass().getResource("/").getPath(); 结果在IDE里面使用是好的,但是在命令行 ...

  9. 查看linux中的sh指向哪,什么是Linux的Shell脚本和怎么执行脚本?

    1.什么是Shell?shell shell是外壳的意思,就是操做系统的外壳.咱们能够经过shell命令来操做和控制操做系统,好比Linux中的Shell命令就包括ls.cd.pwd等等.总结来讲,S ...

最新文章

  1. servlet之控制分发
  2. 从Python调用外部命令
  3. vba oracle 01019,Oracle 客户端连接时报ORA-01019错误总结
  4. mysql or 创建索引_Mysql索引优化
  5. 工作思想的转变_转变成以员工为中心的工作场所的3个技巧
  6. 【第1课 项目愿景】PMP敏捷精讲第五章:项目立项 1/4-科科过PMP
  7. 真切还是虚无?宇宙可能是一个假真空气泡
  8. python编写程序输出诗句_python基于词向量的古诗生成器
  9. 【docker-ce】k8s集群docker容器异常重启问题分析
  10. 模拟小白:挑战23天JAVA程序设计从入门到精通第一天
  11. 输入单号查快递:如何用快递单号查询快递信息
  12. 多摩川绝对值编码器CPLD FPGA通信源码(VHDL格式+协议+说明书)
  13. Java抽象类方法和抽象类
  14. win10 任务栏图标左击无效,右击有效的处理办法
  15. 失无所失的伤感空间日志分享:我会一直这样爱着你,心甘情愿
  16. OC正式协议和非正式协议的区别
  17. 怎么禁用Windows 10 自动更新驱动程序
  18. Android-audio playback/record Monitor
  19. flutter web application upload image
  20. cytoscape.js进阶篇

热门文章

  1. Introducing the Ultimate Comfort Solution: ComfiLife Gel Enhanced Seat Cushion
  2. mysql级联删除报1451 - Cannot delete or update a parent row: a foreign key constrain
  3. android仿喜马拉雅APP状态栏,源码分享:高仿喜马拉雅FM
  4. 什么是RPC?RPC与Stub简述
  5. 斯坦福大学新课CS224W-2019-图网络机器学习算法-视频及ppt资源分享
  6. PostgreSql 分区表
  7. 【牛客网OJ题】人民币转换
  8. 怎样解决张力控制的难点?
  9. 海康威视多摄像头实时视频预览(基于SDK的二次开发)
  10. 2020 Vue 基于Element-UI开发 手动导入并使用Timeline组件(附组件文件)查看快递信息