linux点命令
来源:互联网 发布:网络播放器批发 编辑:程序博客网 时间:2024/06/18 15:45
“.”点命令是shell的一个内部命令,它从指定的shell 文件中读入所有命令语句并在当前进程中执行。 因此当多个shell进程(父子进程或无关进程均可)共享一组变量值时,就可以将这些变量赋值语句定义到一个shell文件里,并在需要这些变量值的程序中使用点语句来引用这个shell文件,从而实现变量值共享(对这些变量值的修改仅涉及到这个shell文件)。但要注意的是,这个shell文件不能包括含有位置参数的语句,即不能接受$1、$2等命令行参数。(懒得自已敲了,上面拷贝自:http://cobra.blogdriver.com/cobra/202288.html)
从上面可以看出,其实点命令相当于c语言里面的#include。另,点命令还有另一个写法:source。下面我们将举例来说明。
我们先写一个简单的shell脚本文件,暂且命名为file1吧:
#! /bin/bash
a="hi"
echo $a
我们先来执行一下这个shell脚本,打开终端,敲入:
./file1
结果是什么,你应该也看到了吧:
bash: ./file1: Permission denied
为什么呢。我们先不管这个吧,先看一下,另一个结果:
. ./file1(注意啊,两个点之间有个空格的哦,要不就成了上一级目录了,如果你不嫌麻烦的话,也可以写source ./file1)
这个的结果呢,跟前面就不一样了,正如我们所愿的,输出了hi。
试比较这两个执行使命吧:
./file1,直接执行,需要另起shell进程,而你似乎还没有这个权限(这个改一下就OK了,后面再说),而用点命令就不一样了(注意啊,./file这里的点可不是点命令里的点啊,我就被这个问题困扰了很久,汗死,竟然忘了点还有当前目录的意思,大家b4我吧),点命令会在当前的shell下执行。
补充说一下怎么改一下file1的权限,让我们可以在按shell脚本来执行:
chmod +x file1
再执行一下./file1,是不是OK了?
再来看另一个例子吧。
首先脚本文件file1
#! /bin/bash
a="hi"
脚本文件file2(与file1在同一个目录下)
#! /bin/bash
./file1
echo $a
记得改一下file1的权限啊,要不./file1就没法执行了。执行一下看看结果。
什么都没有,是吧。我们再改一下file2,这回用一下咱们的点命令
#! /bin/bash
. ./file1
echo $a
怎么样结果不一样了吧。(原谅我实在太懒了,只能举这么简短的例子了,呵呵)
这个例子应该还是能说明点问题的吧。如果不用点命令的话,会另起shell进程,而启动这个进行的时候,它会建立自己的进程环境(暂且这么叫它吧),然后在这个进行结束的时候,它所建立的环境也随之被销毁。而且点命令就不一样了,它会把点命令所带的shell脚本里的所以内容带到当前的shell进程里,在本程序里,就是变量a了。
废话了这么多,其实好像把点命令想像成C里的#include就OK了,呵呵。不过经过这么折腾,还是学到了一点东西的,至少知道了.不仅有点命令的作用,更有当前目录的意思(冷啊,该补一下linux基础了)。
从上面可以看出,其实点命令相当于c语言里面的#include。另,点命令还有另一个写法:source。下面我们将举例来说明。
我们先写一个简单的shell脚本文件,暂且命名为file1吧:
#! /bin/bash
a="hi"
echo $a
我们先来执行一下这个shell脚本,打开终端,敲入:
./file1
结果是什么,你应该也看到了吧:
bash: ./file1: Permission denied
为什么呢。我们先不管这个吧,先看一下,另一个结果:
. ./file1(注意啊,两个点之间有个空格的哦,要不就成了上一级目录了,如果你不嫌麻烦的话,也可以写source ./file1)
这个的结果呢,跟前面就不一样了,正如我们所愿的,输出了hi。
试比较这两个执行使命吧:
./file1,直接执行,需要另起shell进程,而你似乎还没有这个权限(这个改一下就OK了,后面再说),而用点命令就不一样了(注意啊,./file这里的点可不是点命令里的点啊,我就被这个问题困扰了很久,汗死,竟然忘了点还有当前目录的意思,大家b4我吧),点命令会在当前的shell下执行。
补充说一下怎么改一下file1的权限,让我们可以在按shell脚本来执行:
chmod +x file1
再执行一下./file1,是不是OK了?
再来看另一个例子吧。
首先脚本文件file1
#! /bin/bash
a="hi"
脚本文件file2(与file1在同一个目录下)
#! /bin/bash
./file1
echo $a
记得改一下file1的权限啊,要不./file1就没法执行了。执行一下看看结果。
什么都没有,是吧。我们再改一下file2,这回用一下咱们的点命令
#! /bin/bash
. ./file1
echo $a
怎么样结果不一样了吧。(原谅我实在太懒了,只能举这么简短的例子了,呵呵)
这个例子应该还是能说明点问题的吧。如果不用点命令的话,会另起shell进程,而启动这个进行的时候,它会建立自己的进程环境(暂且这么叫它吧),然后在这个进行结束的时候,它所建立的环境也随之被销毁。而且点命令就不一样了,它会把点命令所带的shell脚本里的所以内容带到当前的shell进程里,在本程序里,就是变量a了。
废话了这么多,其实好像把点命令想像成C里的#include就OK了,呵呵。不过经过这么折腾,还是学到了一点东西的,至少知道了.不仅有点命令的作用,更有当前目录的意思(冷啊,该补一下linux基础了)。
- linux点命令
- linux source 点命令
- linux 点命令
- 顺手记点LINUX命令
- linux点命令和source命令
- linux下source命令(点命令)
- 每天学点linux命令(1)
- 每天学点linux命令(2)
- 每天学点linux命令(3)
- 每天学点linux命令(4)
- 每天学点linux命令(5)
- 每天学点linux命令(6)
- 每天学点Linux---ls命令
- 日积月累:Linux中的点命令(.)和source命令
- Linux系统上 SU命令的几点安全建议
- 关于linux环境下man命令的几点总结
- 写点简单的linux服务器的..命令
- 写linux命令程序who的几点总结
- 项目经理能力要求
- [置顶] DirectShow 配置环境
- spring mvc学习的一点体会
- CentOS 配置防火墙操作实例(启、停、开、闭端口)
- 解决VS 编译 typedef void * POINTER_64 PVOID64错误
- linux点命令
- 详解Eclipse断点
- Jmeter线程组之二
- VOFM(例程)
- HDU 2795
- sleep(0) 与sleep(>0)区别
- 图像处理Matlab(一)——图像灰度值
- 如何成为一名嵌入式系统工程师
- ThreadLocal 的实现