参考 bash少见的用法 http://blog.csdn.net/wonderisland/article/details/22892759。

原有项目里自带的启动脚本用到了bash_source获取脚本名称,最后使用如下方式启动程序。

nohup nice -n $APP_NICENESS "${this}" $command "$@" > "$log" 2>&1 < /dev/null &

然而发现有的同学调用后会报出

nice: .....: No such file or directory之类的错误

参考线上脚本写了一个测试shell 名为testbashsource

this="${BASH_SOURCE-$0}"

echo $this

bin=`dirname "$0"`

echo $bin

bin=`cd "$bin"; pwd`

echo $bin

APP_HOME=`dirname "$bin"`

echo $APP_HOME

使用几种不同的方式启动脚本:

17:53 [root@a05.stat.collector.qingdao.youku]$ ./testbashsource

./testbashsource

.

/vol/collector/bin

/vol/collector

tty:[3] jobs:[0] cwd:[/vol/collector/bin]

17:53 [root@a05.stat.collector.qingdao.youku]$ /bin/sh testbashsource

testbashsource

.

/vol/collector/bin

/vol/collector

tty:[3] jobs:[0] cwd:[/vol/collector/bin]

17:53 [root@a05.stat.collector.qingdao.youku]$ /bin/bash testbashsource

testbashsource

.

/vol/collector/bin

/vol/collector

由上可知${BASH_SOURCE-$0}这种用法在使用./testbashsource方式启动的时候得到的值是./testbashsource;在使用sh testbashsource之类的方法启动时候得到的值只有testbashsource

这造成了在最后nice部分启动的时候找不到启动脚本的路径报错。

同样可以注意到的在用到pwd命令后获得的绝对路径都是一样的,所以以后再使用路径的时候尽量还是都用绝对路径这种方法更安全可靠一点。

BASH_SOURCE 用法的更多相关文章

  1. linux中BASH_SOURCE[0]

    在C/C++中,__FUNCTION__常量记录当前函数的名称.有时候,在日志输出的时候包含这些信息是非常有用的.而在Bash中,同样有这样一个常量FUNCNAME,但是有一点区别是,它是一个数组而非 ...

  2. BASH_SOURCE

    在C/C++中,__FUNCTION__常量记录当前函数的名称.有时候,在日志输出的时候包含这些信息是非常有用的.而在Bash中,同样有这样一个常量FUNCNAME,但是有一点区别是,它是一个数组而非 ...

  3. EditText 基本用法

    title: EditText 基本用法 tags: EditText,编辑框,输入框 --- EditText介绍: EditText 在开发中也是经常用到的控件,也是一个比较必要的组件,可以说它是 ...

  4. jquery插件的用法之cookie 插件

    一.使用cookie 插件 插件官方网站下载地址:http://plugins.jquery.com/cookie/ cookie 插件的用法比较简单,直接粘贴下面代码示例: //生成一个cookie ...

  5. Java中的Socket的用法

                                   Java中的Socket的用法 Java中的Socket分为普通的Socket和NioSocket. 普通Socket的用法 Java中的 ...

  6. [转载]C#中MessageBox.Show用法以及VB.NET中MsgBox用法

    一.C#中MessageBox.Show用法 MessageBox.Show (String) 显示具有指定文本的消息框. 由 .NET Compact Framework 支持. MessageBo ...

  7. python enumerate 用法

    A new built-in function, enumerate() , will make certain loops a bit clearer. enumerate(thing) , whe ...

  8. [转载]Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结

    本文对Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法进行了详细的总结,需要的朋友可以参考下,希望对大家有所帮助. 详细解读Jquery各Ajax函数: ...

  9. 【JavaScript】innerHTML、innerText和outerHTML的用法区别

    用法: <div id="test">   <span style="color:red">test1</span> tes ...

随机推荐

  1. 绘图quartz之加水印

      实现在图片上加一个水印  并存在document的路径下  同时在手机相册中也存一份 //首先开启imageContext找到图片     UIGraphicsBeginImageContext( ...

  2. javascript的框架演化

    说起javascript不同的人或许有不同的看法,一些资深后台程序员在刚开始的时候根本没有把它当作是一门编程语言,但是随着后面js框架的出现,以及面向对象的程序设计,还有原型,闭包的不断使用,后台程序 ...

  3. phpcms源码跟踪(1)

    本次跟踪解决几个问题: 1.缓存文件从哪里来,过程中被删除了怎么办 2.模板html是如何被引入的 进入首页时,通过最初的调用,进入控制器\phpcms\modules\content\index.p ...

  4. [转] 翻译-高质量JavaScript代码书写基本要点 ---张鑫旭

    by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=1173 原文作者:St ...

  5. php之递归调用,递归创建目录

    /* 递归自身调用自身,每次调用把问题简化,直到问题解决 即:把大的任务拆成相同性质的多个小任务完成 */ /* function recsum($n){ if($n>1){ return $n ...

  6. Android中AppWidget的分析与应用:AppWidgetProvider .

    from: http://blog.csdn.net/thl789/article/details/7887968 本文从开发AppWidgetProvider角度出发,看一个AppWidgetPrv ...

  7. hiho一下103周 平衡树·Treap

    平衡树·Treap 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho:小Hi,我发现我们以前讲过的两个数据结构特别相似. 小Hi:你说的是哪两个啊? 小Ho:就是二 ...

  8. 自动文档摘要评价方法:Edmundson,ROUGE

    自动文档摘要评价方法大致分为两类: (1)内部评价方法(Intrinsic Methods):提供参考摘要,以参考摘要为基准评价系统摘要的质量.系统摘要与参考摘要越吻合, 质量越高. (2)外部评价方 ...

  9. 转:.NET中使用Redis (一)

    原文来自于:http://blog.jobbole.com/83821/ 原文出处: 寒江独钓   欢迎分享原创到伯乐头条 Redis是一个用的比较广泛的Key/Value的内存数据库,新浪微博.Gi ...

  10. About javascript language

    Core http://www.cnblogs.com/leoo2sk/archive/2010/12/19/ecmascript-scope.html function(arguments) fun ...