zoukankan      html  css  js  c++  java
  • BASH_SOURCE 用法

    参考 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命令后获得的绝对路径都是一样的,所以以后再使用路径的时候尽量还是都用绝对路径这种方法更安全可靠一点。

  • 相关阅读:
    方法引用
    day2
    柯朗数(Courant number)研究
    Socket网络编程学习一
    自制导航
    HighChart 体验之旅 (后台传递JSON参数和数据的方法)
    HighChart体验之旅2 对HighChart控件的再次封装
    委托学习小计
    面试常用SQL整理
    动态LINQ(Lambda表达式)构建
  • 原文地址:https://www.cnblogs.com/dongxiao-yang/p/5064191.html
Copyright © 2011-2022 走看看