常见的一种误区,是使用 pwd 命令,该命令的作用是“print name of current/working directory”,这才是此命令的真实含义,当前的工作目录,这里没有任何意思说明,这个目录就是脚本存放的目录。所以,这是不对的。你可以试试 bash shell/a.sh,a.sh 内容是 pwd,你会发现,显示的是执行命令的路径 /home/june,并不是 a.sh 所在路径:/home/june/shell/a.sh

另一个误人子弟的答案,是 $0,这个也是不对的,这个$0是Bash环境下的特殊变量,其真实含义是:

Expands to the name of the shell or shell script. This is set at shell initialization.  If bash is invoked with a file of commands, $0 is set to the name of that file. If bash is started with the -c option, then $0 is set to the first argument after the string to be executed, if one is present. Otherwise, it is set to the file name used to invoke bash, as given by argument zero.

这个$0有可能是好几种值,跟调用的方式有关系:

  • 使用一个文件调用bash,那$0的值,是那个文件的名字(没说是绝对路径噢)

  • 使用-c选项启动bash的话,真正执行的命令会从一个字符串中读取,字符串后面如果还有别的参数的话,使用从$0开始的特殊变量引用(跟路径无关了)

  • 除此以外,$0会被设置成调用bash的那个文件的名字(没说是绝对路径)

下面对比下正确答案:

basepath=$(cd `dirname $0`; pwd)

在此解释下basepath :

dirname $0,取得当前执行的脚本文件的父目录cd `dirname $0`,进入这个目录(切换当前工作目录)pwd,显示当前工作目录(cd执行后的)

由此,我们获得了当前正在执行的脚本的存放路径。

linux shell 获取当前正在执行脚本的绝对路径相关推荐

  1. linux脚本获取当前用户,bash shell 获取当前正在执行脚本的绝对路径

    一般我们写Shell脚本的时候,都倾向使用绝对路径,这样无论脚本在什么目录执行,都应该起到相同的效果,但是有些时候,我们设计一个软件包中的工具脚本,可能使用相对路径更加灵活一点,因为你不知道用户会在哪 ...

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

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

  3. linux脚本简单定时,shell之定时周期性执行脚本的方法示例

    示例 1.编写测试脚本脚本 time .sh $ cat time.sh #! /bin/bash echo $(date +%s) >> /home/ocean/out.txt 保存完毕 ...

  4. PHP 命令行模式实战之cli+mysql 模拟队列批量发送邮件(在Linux环境下PHP 异步执行脚本发送事件通知消息实际案例)...

    源码地址:https://github.com/Tinywan/PHP_Experience 测试环境配置: 环境:Windows 7系统 .PHP7.0.Apache服务器 PHP框架:ThinkP ...

  5. Linux shell获取时间和时间间隔(ms级别)

    说明:在进行一些性能测试的时候,有时候我们希望能计算一个程序运行的时间,有时候可能会自己写一个shell脚本方便进行一些性能测试的控制(比如希望能运行N次取平均值等),总之,这其中有一个需求可能就是获 ...

  6. linux获取文件的md5,linux shell 获取文件md5的命令linux操作系统 -电脑资料

    下面我给各位朋友总结一下在linux中利用shell命令来获取文件md5及遍历目录下所有文件的md5的例子,希望此例子对各位同学会有所帮助, 获取文件的MD5值: $ md5sum linuxmint ...

  7. linux的shell键盘输入,linux shell获取键盘输入

    linux shell从键盘获取输入 代码1: #!/bin/bash #提示"Input your choice:",把用户的输入保存入变量choice_user中 read - ...

  8. Linux Shell获取参数的方法

    传参用法 Linux Shell 如何获取参数的方法 $# 是传给脚本的参数个数 $0 是脚本本身的名字 $1 是传递给该shell脚本的第一个参数 $2 是传递给该shell脚本的第二个参数 $@ ...

  9. Shell编程规范与变量(shell编程规范,执行脚本文件的四种方式,管道符号与重定向,shell变量的作用于类型)

    文章目录 Shell脚本概述 Shell脚本的概念 Shell的作用 Shell编程规范 重定向与管道 Shell脚本变量 自定义变量 特殊变量 Shell脚本概述 Shell Script ,She ...

最新文章

  1. Windows Server 2012 R2 WSUS-11:经典的客户端排错操作
  2. python-day22(序列化)
  3. SAP BASIS顾问认知的一些误区
  4. oracle解除死锁
  5. linux文件创建、查看、编辑命令
  6. 微信小程序集成腾讯云 IM SDK
  7. 爬虫学习日记 Day1 什么是request,respond,url,headers
  8. XmlReader 内部使用NameTable
  9. React Ant Design UI 图片上传组件 代码片段
  10. php面试题之四——Linux部分(高级部分)
  11. ftok() Linux Linux函数
  12. 广电linux机顶盒装软件,电视盒子如何安装第三方软件(四种参考方法)
  13. w ndows键是哪一个,Win10截图快捷键是哪个?Windows10自带截屏快捷键使用方法大全...
  14. 使用Go语言解析多点触摸协议(MIT)TypeB由ADB调试产生的数据
  15. 2020 3 PLC PON
  16. Vue项目中TS引入多个.svg文件的总结
  17. Class1导数与变化率
  18. jQuery之.each( function(index, Element) )
  19. 对计算机辅助英语的看法,浅谈利用计算机辅助英语语言测试
  20. Altera特殊管脚的使用(适用全系列Altera FPGA,MSEL区别除外)-来自altera论坛

热门文章

  1. Arduino方式开发ESP32笔记:使用Preferences保存数据
  2. 如何设计系统的错误码及错误信息
  3. 字符指针,字符数组,双引号的字符串的区别与联系
  4. 5.MySQL Cluster(MySQL集群)
  5. 如何获得瑞星网络安全工程师
  6. VMware vSphere4.1看图识HA
  7. VM页面中遍历枚举类
  8. xCode自定义快捷键
  9. 获取点击的键盘的keyCode
  10. WCF基础 (续 暴露元数据交换节点)