获取shell脚本自身所在目录的Shell脚本分享
前几天写的七牛的参赛demo,用bash写了一个便捷安装的脚本,涉及到了路径相关的判断,从stackoverflow,加上自己的实践整理一下。
简单版
下面是一个最简单的实现,可以解决大多数问题,缺陷是对于软链接显示的是软链接所在的目录
lineos:false
复制代码 代码如下: #!/bin/bash
DIR="$( cd "$( dirname "$0" )" && pwd )"
完善版
这个版本解决了使用ln -s target linkName创造软链接无法正确取到真实脚本的问题。
lineos:false
复制代码 代码如下: #!/bin/bash
SOURCE="$0"
while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
SOURCE="$(readlink "$SOURCE")"
[[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
done
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
获取shell脚本自身所在目录的Shell脚本分享的更多相关文章
- 【转】在cmd/bat脚本中获取当前脚本文件所在目录
一.关于cd的/d参数 关于cd 的/d参数,在cmd中敲入cd /?可以看到/d参数的解释如下: 使用 /D 命令行开关,除了改变驱动器的当前目录之外,还可改变当前驱动器.这句话不太好理解,我做个试 ...
- 获取shell脚本自身所在目录
解决了使用ln -s target linkName创造软链接无法正确取到真实脚本的问题. #!/bin/bash SOURCE="$0" while [ -h "$SO ...
- Python获取脚本所在目录的正确方法(转)
1.以前的方法如果是要获得程序运行的当前目录所在位置,那么可以使用os模块的os.getcwd()函数.如果是要获得当前执行的脚本的所在目录位置,那么需要使用sys模块的sys.path[0]变量或者 ...
- python获取文件所在目录
1.执行的python程序获取自己文件所在目录 import os,sys os.chdir(sys.path[0]); dir_name = os.path.abspath(os.path.join ...
- 获得Python脚本所在目录
如何获得Python脚本所在目录的位置 On this page... (hide) 1. 以前的方法 2. 正确的方法 3. 实例说明 (Edit) 1. 以前的方法 如果是要获得程 ...
- c#获取当前运行程序所在的目录
C#获取项目程序及运行路径的方 1.asp.net webform用“Request.PhysicalApplicationPath获取站点所在虚拟目录的物理路径,最后包含“\”: 2.c# wi ...
- shell脚本中获取当前所在目录地址
shell脚本中获取当前所在目录如下 #!/bin/bash work_path=$() cd ${work_path} work_path=$(pwd) cd ${work_path}/src
- shell 脚本中的当前工作目录等于执行脚本时所在的工作目录
1. 测试脚本 在当前目录下创建 h1 h2两个文件夹 2. 在脚本所在目录执行脚本 在当前目录下创建了h1 h2两个目录 3. 在其他目录爱=下执行脚本 在其他目录下执行脚本时,在执行脚本所在的目录 ...
- centos shell脚本编程1 正则 shell脚本结构 read命令 date命令的用法 shell中的逻辑判断 if 判断文件、目录属性 shell数组简单用法 $( ) 和${ } 和$(( )) 与 sh -n sh -x sh -v 第三十五节课
centos shell脚本编程1 正则 shell脚本结构 read命令 date命令的用法 shell中的逻辑判断 if 判断文件.目录属性 shell数组简单用法 $( ) 和$ ...
随机推荐
- Third-person Camera Navigation
http://msdn.microsoft.com/en-us/library/bb203909(v=xnagamestudio.31).aspx http://xbox.create.msdn.co ...
- JQuery.getJSON 从aspx页面返回JSON数据
public partial class WebForm2 : System.Web.UI.Page { protected void Page_Load(object sender, EventAr ...
- asp.net core 中的MD5加密
尝试了很长时间,但是一直报core 5 不可用,当时就崩溃了. 但是偶然的机会 我添加了Microsoft.AspNet.Identity 之后.MD5就好用了. 估计是这个报实现了core5下的MD ...
- linq/EF/lambda 比较字符串日期时间大小
在使用EF时,想要比较字符串类型的日期时,参考以下: SQL语句: 1 2 3 4 1)select * from TableName where StartTime > '2015-04-08 ...
- JavaScript-也来谈--闭包
闭包,以前研究过,可能是当初理解的不够透彻,现在又忘了,(给自己一个台阶下`-...)毕竟js一直没怎么用, 为了防止自己过段时间再忘了,写篇重要的闭包重点, 这样时不时也能温习下知识,不用每次想了解 ...
- Linux中postfix邮件服务器的搭建
postfix是Wietse Venema在IBM的GPL协议之下开发的MTA(邮件传输代理)软件.postfix是Wietse Venema想要为使用最广泛的sendmail提供替代品的一个尝试.在 ...
- notepad++和sublime 常用插件及主题
sublime: 常用主题有: Pastels on Dark Monokai Zenburnsque 常用插件有 Anaconda Package Control Side Bar ConvertT ...
- java项目报junit 相关错误
maven配置,java工程运行时需要把test测试相关移除
- OC第六节—— 继承与类别
1.继承: 父类和子类的关系. 1.1 生活中的继承 父类 子类 父类 子类 ...
- Swift-打开其它Storyboard中的自定义模态窗口
本文的方法针对OS X应用开发. 如果想在某个ViewController中,用模态窗口的方式,打开某个Storyboard中定义的WindowController.可用以下方式. let story ...