zoukankan      html  css  js  c++  java
  • linux中新增一个shell命令的方法

    1. 可以在一个自己建立的shell脚本中定义一个函数,使用 ". xxx.sh" 或者 "source xxx.sh" 运行这个shell脚本之后,其中的function就自动成为了当前shell中的新增命令了。

    2. android编译配置环境时会运行. build/envsetup.sh脚本,就是使用这种方法为当前shell新增了一些命令,如:croot, lunch, mm, mmm, mma, cgrep等等。一直以为envsetup.sh中做了什么高级操作才实现了这样神奇的效果,也一直在为子shell中如何改变父shell的目录而烦恼,看了脚本的实现后发现原来十分简单,只需要在脚本中定义一个函数即可,例如:

    function croot()
    {
        local T=$(gettop)
        if [ "$T" ]; then
            if [ "$1" ]; then
                cd $(gettop)/$1
            else
                cd $(gettop)
            fi
        else
            echo "Couldn't locate the top of the tree.  Try setting TOP."
        fi
    }

    这样source完envsetup.sh就可以直接使用croot命令了,无需其它任何操作。

    3. 写一个脚本测试一下

    # cat cmd.sh

    #!/bin/sh    # 这里可有可无
    
    function mycd()
    {
        cd /home
    }

    测试:

    root@ubuntu:/home/ubuntu/Android_work/Mytest# mycd        //先执行一下确保当前shell中无此命令
    root@ubuntu:/home/ubuntu/Android_work/Mytest# . cmd.sh  //需要先执行一下这个脚本,可以把它放在~/.bashrc中为每个命令行窗口自动执行
    root@ubuntu:/home/ubuntu/Android_work/Mytest# mycd        //执行命令
    root@ubuntu:/home#                                         //cd /home体现在父shell中了。

    参考:

    linux中新增一个shell命令最简单的方法

  • 相关阅读:
    阅读任务-阅读笔记-4
    阅读任务-阅读提问-3
    阅读任务-阅读笔记-3
    阅读任务-阅读提问-2
    阅读任务-阅读提问-1
    构建之法:现代软件工程-阅读笔记1
    个人编程作业1-GIT应用
    《构建之法:现代软件工程-阅读笔记》
    课后作业-阅读任务-阅读提问-1
    结对编程项目作业5
  • 原文地址:https://www.cnblogs.com/hellokitty2/p/10962319.html
Copyright © 2011-2022 走看看