`
小皮球
  • 浏览: 33932 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

linux shell 获取文件绝对路径.

阅读更多
要得到正在执行的程序/脚本自身所存放的绝对路径,在 PHP 里面可以用 dirname(realpath(__FILE__)) ; C# 则有 System.Windows.Forms.Application.StartupPath ; java 似乎没有什么比较直接的方法,只能利用 CodeSource 来间接获取 。而在 linux shell 脚本里面如果想得到当前脚本文件存放的绝对路径,也没有太现成的命令可以调用,不过可以通过下面的语句来获取:

baseDirForScriptSelf=$(cd "$(dirname "$0")"; pwd)
echo "full path to currently executed script is : ${baseDirForScriptSelf}"

虽说大部分情况下我们并不需要这样的绝对路径来完成工作;但如果要把多个脚本、数据文件等内容打包作为一个整体来交付别人使用,又希望不论用户拷贝到哪个目录下执行脚本都能够正确的找到这个包里面的其他内容的话,用这样的脚本来自动定位包的根目录应该是个比较鲁棒的做法。

这个方法确实比用pwd高明太多了。
但是把他用在嵌套脚本时就会发生问题。例如我在脚本a里面调用脚本b。
脚本b:
baseDirForScriptSelf=$(cd "$(dirname "$0")"; pwd)
echo $baseDirForScriptSelf
脚本a:
. b.sh
最后输出的结果是脚本a的绝对路径,而不是脚本b的绝对路径。我发现问题出在$0这个地方。这个时候的$0是脚本a的路径名称。


或者,test=`dirname $0`
echo $test 
也可达到目的.


分享到:
评论

相关推荐

    linux获取shell脚本所在绝对路径操作介绍.docx

    在Linux系统中,编写Shell脚本时,有时我们需要获取当前执行的脚本的绝对路径,以便于进行一些路径相关的操作,比如引用同目录下的其他文件或执行其他脚本。本篇文档将详细介绍如何在Shell脚本中获取脚本的绝对路径...

    详解shell 遍历文件夹内所有文件并打印绝对路径

    ### 详解Shell脚本遍历文件夹内所有文件并打印绝对路径 #### 一、引言 在Linux或Unix环境中,Shell脚本是一种强大的工具,能够帮助用户执行一系列任务,如文件管理、进程控制等。其中,遍历文件夹内的所有文件并...

    linux下shell脚本实现数据的导出

    1. `ServletActionContext.getServletContext().getRealPath("/")+"download/shell/backup.sh"`获取`backup.sh`的绝对路径。这通常用于Web应用,获取服务器上的实际文件路径。 2. `sh filepath`: 在Java中,使用`...

    Linux Shell PPT

    路径分为绝对路径和相对路径,前者从根目录开始,后者基于当前路径。 了解一些基本的Linux命令对于日常操作至关重要。例如,`mkdir`创建目录,`touch`更新或创建文件,`pwd`显示当前目录,`mv`移动或重命名文件,`...

    linux入门学习笔记

    - **绝对路径**:以 `/` 开头的路径,表示从根目录开始查找,如 `/home/user1/abc.txt`。 - **相对路径**:不以 `/` 开头的路径,表示相对于当前工作目录的路径,如 `user1/abc.txt`。 - **查找帮助**:可以使用 `...

    Shell中获取脚本所在目录绝对路径的方法

    而在 linux shell 脚本里面如果想得到当前脚本文件存放的绝对路径,也没有太现成的命令可以调用,不过可以通过下面的语句来获取: 代码如下: baseDirForScriptSelf=$(cd “$(dirname “$0″)”; pwd) echo “full ...

    《嵌入式操作系统》实验教学大纲:实验一-Linux基本命令及Shell编程.doc

    学生需要掌握如何使用绝对路径和相对路径来导航文件系统。 文件操作命令包括`ls -l`查看文件属性,`touch`创建新文件,`cp`复制文件,`find`搜索特定文件。例如,`cp`可以用来将系统文件复制到指定目录,而`find`...

    《Linux基础千锤百炼》v2.pdf

    - **路径类型**:书中详细解释了Linux中的绝对路径和相对路径,以及如何使用`.`(当前目录)、`..`(上一级目录)和`-`(上一次使用的目录)。 - **路径符号**:`~`表示用户的家目录,如`~account`代表account用户...

    浙江大学Linux程序设计实验1Linux shell基本命令

    9. **掌握绝对路径与相对路径的概念**:以及它们在实际操作中的应用。 10. **高效浏览Linux目录**:使用诸如`cd`, `ls`等命令高效地导航目录。 11. **理解文件内容类型**:包括普通文件、目录文件等。 12. **识别...

    Linux培训系列第一讲.pdf

    - **路径概念**:在Linux中,路径分为绝对路径和相对路径。绝对路径从根目录`/`开始,而相对路径则相对于当前工作目录。 - **路径示例**:如`/home/user/documents`是一个绝对路径,而`../images`则是相对于当前目录...

    Linux程序设计-学习笔记.doc

    否则必须指定需要执行程序的路径(相对路径或者绝对路径)。 四、C 语言编译器 在 Linux 中,我们使用 GNU C 编译器,简称为 gcc。gcc 支持 ANSI C 的标准语法。在 http://www.gnu.org 上可以获取 gcc 软件包。 ...

    Linux.Pocket.Guide.3rd.Edition.2016.6.pdf

    - **路径概念**:解释绝对路径和相对路径的区别,并给出实例演示。 ##### 6. Shell特性 - **Shell简介**:介绍几种常用的Shell,如bash、zsh等。 - **环境变量**:说明环境变量的作用及设置方法。 - **命令别名**...

    Linux获取当前脚本真实路径的方法

    在Linux系统中,有时我们需要获取当前执行脚本的完整路径,以便进行各种操作,比如读取同一目录下的其他文件、设置工作目录等。本文将详细解释如何在Linux中获取脚本的真实路径,并介绍相关的命令。 首先,让我们...

    shell经典教程 .TXT shell经典教程

    - **绝对路径**:从根目录开始的完整路径。 - **相对路径**:相对于当前工作目录的路径。 - **变量**: - **环境变量**:由操作系统维护,用于存储配置信息。 - **局部变量**:在脚本内部定义,仅在该脚本内...

    爱特全能网站文件专家 v2.8.zip

    命名功能如果输入绝对路径还可以当移动使有时操作重要文件怕出错,文件复件让你安心. 谦容各种浏览器,甚至Elinks也能完美的使用. 更多技巧等你使用,欢迎Bug的反馈与交流讨论. 爱特全能网站文件专家功能介绍: 01....

    shell加密工具shc.zip

    Shell脚本是Linux或Unix系统中广泛使用的命令行解释器,用于执行一系列操作系统命令。在某些情况下,为了保护脚本中的敏感信息或者防止未经授权的访问,我们可能需要对这些脚本进行加密。"shell加密工具shc"就是这样...

    获取程序根目录可执行文件根目录示例

    3. **Python**: 使用`os.path.dirname(os.path.abspath(__file__))`,其中`__file__`是当前脚本的路径,`abspath()`转换为绝对路径,`dirname()`获取目录部分。 4. **Java**: 通过`java.lang.ClassLoader....

    Linux使用shell脚本定时删除历史日志文件

    `adirname`函数用于获取给定文件的绝对路径,而`MYNAM`、`MYDIR`、`MYCFG`、`MYTMP`和`MYLCK`等变量分别保存了脚本名、脚本所在目录、配置文件路径、临时文件目录和锁定文件路径。锁定机制确保脚本不会同时运行两次...

Global site tag (gtag.js) - Google Analytics