[Shell]获取当前正在执行脚本的绝对路径

转载 2016年06月15日 19:55:26
1. pwd命令

我们看看使用pwd命令能否获取当前正在执行脚本的绝对路径。该命令的作用是“print name of current/working directory”,真实含义是当前工作目录,并不是正在执行脚本的目录。

  1. xiaosi@Qunar:~/company/sh$ cat pwd.sh
  2. echo `pwd`
  3. xiaosi@Qunar:~/company/sh$ sh pwd.sh
  4. /home/xiaosi/company/sh
  5. xiaosi@Qunar:~/company/sh$ cd ..
  6. xiaosi@Qunar:~/company$ sh sh/pwd.sh
  7. /home/xiaosi/company

pwd.sh脚本中只有一句:echo `pwd`。通过在不同路径下运行脚本,sh pwd.sh得到/home/xiaosi/company/sh,然而sh sh/pwd.sh 得到/home/xiaosi/company,所以说pwd命令并不能得到正在执行脚本的目录。

2. $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值与调用的方式有关:

(1)使用一个文件调用bash,那$0的值是文件的名字

  1. xiaosi@Qunar:~/company/sh$ cat pwd.sh
  2. echo $0
  3. xiaosi@Qunar:~/company/sh$ sh pwd.sh
  4. pwd.sh

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

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

3. 正解

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

dirname $0,取得当前执行的脚本文件的父目录 

cd `dirname $0`,进入这个目录(切换当前工作目录) 

pwd,显示当前工作目录(cd执行后的)




相关文章推荐

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

有时候,我们需要知道当前执行的输出shell脚本的所在绝对路径,可以用dirname实现。 我们知道 dirname 可以获取一个文件所在的路径,dirname的用处是: 输出已经去除了尾部的”...
  • 10km
  • 10km
  • 2016-07-14 10:36
  • 8060

Linux中shell脚本获取当前工作目录

workdir=$(cd $(dirname $0); pwd) 步骤1 dirname $0,取得当前执行的脚本文件的父目录 步骤2 cd到父目录,即进入当前工作目录 步骤3 pwd显示当前工...

shell 脚本中获取命令的输出

shell脚本中获取命令执行返回值需要注意的地方

获取sh shell 当前文件的绝对路径

转载自一位大神的帖子: http://www.jquerycn.cn/a_9882#!/bin/bash echo '$0: '$0 echo "pwd: "`pwd` echo "scriptPa...

shell 中获取当前工作路径和命令文件所在绝对路径

[转]linux shell 获取当前正在执行脚本的绝对路径 原文链接:http://sexywp.com/bash-how-to-get-the-basepath-of-current-ru...
  • samxx8
  • samxx8
  • 2016-04-26 21:47
  • 10031

Linux shell 之 提取文件名和目录名的一些方法

很多时候在使用Linux的shell时,我们都需要对文件名或目录名进行处理,通常的操作是由路径中提取出文件名,从路径中提取出目录名,提取文件后缀名等等。例如,从路径/dir1/dir2/file.tx...

bash shell 获取当前正在执行脚本的绝对路径

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

linuxshell脚本获取并进入当前目录

linuxshell脚本获取并进入当前目录在linux的shell中经常需要进入脚本当前所在的目录,以其为基准使用相对路径,那么怎样获取到这个路径呢? linux的shell中并没有一个变量能直接代...
  • bjrxyz
  • bjrxyz
  • 2016-07-07 10:13
  • 3154

Tesseract-OCR 字符识别---样本训练

转自:http://blog.csdn.net/feihu521a/article/details/8433077         Tesseract是一个开源的OCR(Optica...

shell 中获取文件真实路径(绝对路径)

shell 脚本中,通常会使用相对路径来做处理,但有时候,我们也许需要用到绝对路径。 在shell怎么获取一个文件或目录的绝对路径呢? 也许你会立马想到realpath(如果你写过php的话),那么s...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)