unix脚本和linux脚本的区别,linux shell中“.” 和 “./”执行的区别详解

目前注意到的区别主要在于环境变量的作用域上:

1. 如果使用" ./ " 执行,可以理解为程序运行在一个全新的shell中,不继承当前shell的环境变量的值, 同时若在程序中改变了当前shell中的环境变量(不使用export),则当前shell的环境变量值不变。

2. 如果使用” . "执行,则程序继承当前shell中的环境变量,同时,若在程序中改变了当前shell中的环境变量(不使用export),则当前shell中该环境变量的值也会改变

另外一个区别点在于, “ ./ "只能用于拥有执行权限的文件, 而 ” . " 则可以暂时提升

example:

1. 有如下脚本文件  test.sh

# pre value

echo 'pre is :' $VAL_TS

# change the value

VAL_TS='world'

# post value

echo 'post is :' $VAL_TS

2. 在当前shell中执行如下命令:

user@pc:~$ VAL_TS='hello' #定义变量 VAL_TS 其值为: hello

user@pc:~$ echo $VAL_TS #输出变量 VAL_TS 的值

#结果

hello

user@pc:~$ ./test.sh #使用 './ ' 执行脚本 test.sh

#结果

pre is : #脚本程序没有继承当前shell中的 VAL_TS的值

post is : world #进行完修改之后,其值为 ‘world'

user@pc:~$ echo $VAL_TS #在shell中再次输出 VAL_TS 的值

#结果

hello #虽然在 test.h 中改变了变量 VAL_TS 的值,但并不能作用到shell中

user@pc:~$ . test.sh #使用 ' . ' 执行脚本 test.sh

#结果

pre is : hello #脚本程序中继承了 shell中的 VAL_TS 值

post is : world #进行修改完成后,值变为 ‘world'

user@pc:~$ echo $VAL_TS #在shell中输出 VAL_TS 的值

#结果

world #脚本程序中的修改作用到了shell中

总结:

个人理解:

1. " ./ “ 的方式类似于新建了一个shell, 在这个新建的shell中去执行脚本中的程序,类似于新建了一个子进程,但这个子进程不继承父进程的所有非export类型的变量,并且脚本中对非export环境变量的创建或修改不会反馈到外部调用shell中

2. ” . " 的方式类似于将脚本中的每一行指令逐条在当前shell中执行,因此它继承了当前shell的环境变量,同时脚本中对环境变量的修改也可以反馈到shell中

到此这篇关于linux shell中“.” 和 “./”执行的区别详解的文章就介绍到这了,更多相关shell“.” 和 “./”内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基本信息 * 原书名: Mastering UNIX Shell Scripting * 原出版社: Wiley * 作者: (美)Randal K. Michael [作译者介绍] * 译者: 詹文军[同译者作品] 邓波 * 出版社:电子工业出版社 * ISBN:7121008467 * 上架时间:2005-1-31 * 出版日期:2005 年1月 * 开本:16开 * 页码:516 * 版次:1-1 * 所属分类: 计算机 > 操作系统 > UNIX 教材 > 研究生/本科/专科教材 > 工学 > 计算机 教材 > 计算机教材 > 本科/研究生 > 计算机专业 > 计算机专业课程 > 操作系统 内容简介回到顶部↑ 本书使用的技术将教会读者如何理性地处理问题,同时还使得读者能够根据基本的命令语法 来将它转换为一个针对特定问题的shell脚本解决方案。 本书提供了许多完整的脚本,可以将它们用于自动完成重复的任务和解决现实系统管理问题的 shell脚本。这些任务包括: ● 通信,例如自动的事件通知;监视本地或远程系统上的进程:自动的FTP文件传输 ● 针对文件系统、页面调度/交换空间、系统负载、应用程序、进程的信息收集与监视活动, 捕获系统配置 ● 打印队列管理,保证打印机正常打印 ● 使用bc工具程序在shell脚本进行浮点数学运算 本书配套的Web网站(www.wiley.com/compbooks/michael)上包含了本书讨论的所有shell 脚本和大部分函数,同时还提供了针对各种任务的其他shell脚本。 本书详细介绍如何编写shell脚本来解决实际生活遇到的UNIX问题和任务。本书面向所有的UNIX版本,重点覆盖对象包括AIX、Linux、 HP-UX和Solaris操作系统。本书的每一章都以一个经常遇到的UNIX问题作为开始。对于每个问题,都定义了一个明确的目标。在了解了目标和命令语法之后,读者可以根据命令来创建shell脚本。本书的特点是从基础开始,然后在解决方案加入越来越多的判断逻辑。针对复杂程度不同的各种问题,本书分别用不同的章节加以介绍。 本书面向那些通过命令行方式使用UNIX的用户。在本书讨论的主题主要针对UNIX专业人员—程序员、系统分析员、系统操作员、系统管理员,以及任何希望在技术支持领域取得进步的人。 作译者回到顶部↑ 本书提供作译者介绍 Randal K.Michael是一位在可口可乐公司任职的UNIX系统管理员,他编写了许多shell脚本来处理 UNIX下复杂的系统监视和事件通知问题。他具有23年的工作经验:同时担任UNIX系统管理员达10年 之久,熟悉Solaris、Linux、AIX和HP-UX操作系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值