`

Linux下shell与子shell及执行Script的几种方式

 
阅读更多
    Linux登陆主机后,在执行Script之前,其实我们已经处于一个shell中,即Login shell。它是将来要执行Script的父shell。如root账号默认为/bin/bash。
     Linux下每个账号都可以自定义Login shell,在/etc/passwd文件中。Login shell定义在第七个字段,如果这个字段的shell程序不存在、不合法,或执行失败,则无法登陆主机。
     当在执行一个Shell Script时,父shell会根据Script程序的第一行#!之后指定的shell程序开启一个子shell环境,然后在子shell中执行此Shell Script,一旦执行完毕,子shell结束,回到父shell,不会影响原父shell的环境。

Linux执行Script有三种执行方式:
1.source filename 或者 . filename
  注意. Filename中,. 和filename之间有个空格。
  此命令式在当前shell环境下读取并执行filename中的命令。该filename文件可以无执行权限。通常用于重新执行刚修改的初始化文档。source命令(从 C Shell 而来)是bash shell的内置命令。 点命令,就是个点符号,(从Bourne Shell而来),就是顺序的执行文件里的命令而已。
2.sh filename 或者 bash filename
  此命令是在当前相应的bash环境下新建一个子shell读取并执行FileName中的命令,该filename文件可以无执行权限。
3.  ./filename
  此命令打开一个子shell来读取并执行filename中命令,该文件必须必须有可执行的权限。chmod +x filename。
三者的区别:
1.当shell脚本具有可执行权限时,用sh filename与./filename执行脚本是没有区别得。./filename是因为当前目录没有在PATH中,所有"."是用来表示当前目录的。
2.sh filename 重新建立一个子shell,在子shell中执行脚本里面的语句,该子shell继承父shell的环境变量,但子shell新建的、改变的变量不会被带回父shell,除非使用export。
3.source filename:这个命令其实只是简单地读取脚本里面的语句依次在当前shell里面执行,没有建立新的子shell。那么脚本里面所有新建、改变变量的语句都会保存在当前shell里面。
举例:
1.新建一个test.sh脚本,内容为:A=1。
2.然后使其可执行chmod +x test.sh。
3.运行sh test.sh后,echo $A,显示为空,因为A=1并未传回给当前shell。
4.运行./test.sh后,也是一样的效果。
5.运行source test.sh 或者 . test.sh,然后echo $A,则会显示1,说明A=1的变量在当前shell 中。
举例:
1.新建一个sh01.sh脚本,内容为
#!/bin/bash
echo $SHLVL  (输出当前shell的层次)
2.然后使其可执行chmod +x sh01.sh。
3.运行sh sh01.sh后,输出3。
4.运行./ sh01.sh后,也是一样的效果。
5.运行source sh01.sh 或者 . sh01.sh,输出2。
举例:
1.登录主机后,打开一个终端,输入echo $SHLVL,输出2。
2.输入bash,进入一个子shell,然后再输入echo $SHLVL,输出3。
3.输入exit,然后再输入echo $SHLVL,输出2。
4.输入exit,退出终端。

分享到:
评论
1 楼 cometzb_xujun 2012-06-15  
很好,期待更加优秀的博客

相关推荐

    Linux&SHELL;基本知识笔试试卷

    - **知识点**:在 Linux 中执行 SHELL 脚本,可以使用以下几种方法: - 使用 `source $shell_script` 或 `.$shell_script` 来在当前 shell 中执行脚本。 - 使用 `sh $shell_script` 或 `./$shell_script` 来在一个...

    Linux Shell编程基础

    执行Shell脚本可以通过几种方式完成。可以直接使用Shell命令,如`bash script_name`,或者使用`.`(source)命令,使得脚本在当前Shell环境中执行。最常用的方法是使用相对路径`./script_name`,这样可以避免因环境...

    使用runtime实现linux命令行或shell脚本多次调用

    在Java编程中,有时我们需要与操作系统进行交互,执行一些系统级别的任务,比如运行Linux命令或shell脚本。`Runtime`类是Java标准库提供的一种机制,允许我们在程序中执行操作系统命令。本文将深入探讨如何使用`...

    Linux下Shell编程

    ### Linux下Shell编程知识点 #### 一、Shell概念与作用 **Shell** 是 Linux 和 Unix 操作系统中的一个重要组成部分,可以被理解为一种特殊的程序,它位于用户与操作系统内核之间,作为用户与内核之间的桥梁。Shell...

    linux下shell的工作原理

    Linux下的Shell是一个强大的命令行接口,它连接用户与操作系统内核,使得用户可以通过输入命令来交互操作系统。本文主要探讨了Shell的工作原理、种类以及Bash的特性。 首先,理解Shell的基本概念至关重要。Shell是...

    Linux-test-shell.zip 练习 Linux 调用shell脚本

    调用Shell脚本有几种方式: 1. 直接执行:如果脚本在同一目录下,可以使用`./script.sh`。 2. 全路径执行:如果知道脚本的完整路径,可以直接`/path/to/script.sh`。 3. 环境变量:将脚本路径添加到PATH环境变量中,...

    Linux主要shell命令、sed、awk使用详解

    Linux 中有多种 shell,其中最常用的几种是 Bourne shell(sh)、C shell(csh)和 Korn shell(ksh)。 shell 的工作原理 shell 是用户和 Linux 操作系统之间的接口程序,它可以解释用户输入的命令并将其传递给 ...

    Linux_Shell_Scripting_Cookbook英文版

    Linux Shell Scripting Cookbook是一本专注于Linux环境下Shell脚本编程的实用指南。本书提供了解决现实世界中Shell脚本问题的110多个简单而有效的“食谱”。书名中的“Cookbook”一词表明本书采用了食谱式的编写方式...

    Linux_Shell-programming.zip_Linux shell_linux

    在Linux环境下,Shell不仅是一个交互式的命令解释器,更是一种强大的编程语言,能够实现复杂的逻辑控制和文件处理。本资料"Linux_Shell编程基础.ppt"应该包含了对这一主题的详细介绍。 首先,我们需要理解什么是...

    Linux操作系统中的Shell编程

    7. **脚本执行**:通过赋予脚本执行权限(`chmod +x scriptname.sh`)并直接运行(`./scriptname.sh`)或通过bash执行(`bash scriptname.sh`)来运行Shell脚本。 掌握Shell编程不仅可以提高日常Linux使用效率,还...

    linux shell脚本编程入门资料

    在Shell脚本中,主要存在以下几种变量类型: - **普通用户自定义变量**:由用户自行定义的变量,如上文中的`myname`。 - **环境变量**:由系统预定义的一组变量,例如`PATH`、`HOME`等,这些变量对整个系统环境生效...

    精华Linux下Shell编程.ppt

    Shell编程是Linux环境下的重要技能,它是一种命令解释器,同时也是一种强大的程序设计语言。Shell允许用户通过编写脚本来自动化日常的系统管理任务,提高了工作效率。 首先,Shell是操作系统和用户之间的桥梁,它为...

    给linux的shell脚本加密(ZT).rar_Linux shell_shell 脚本_shell加密_shell脚本

    在Linux系统中,Shell脚本是一种非常强大的工具,它允许用户编写自动化任务,执行系统管理操作,甚至构建复杂的程序。然而,随着脚本的复杂性和重要性增加,保护脚本内容的安全变得至关重要,特别是当脚本包含敏感...

    Linux实验四shell编程

    在Linux世界中,Bash(Bourne-Again SHell)是最常用的一种Shell,它不仅提供了基本的命令执行功能,还支持强大的脚本编程能力。 **一、Shell的作用和分类** Shell的主要作用是提供一个用户与操作系统内核之间的...

    Linux下的shell编程入门.pdf

    Shell脚本提供了几种循环机制: - `for` 循环,可以遍历列表或文件。 - `while` 循环,当特定条件为真时重复执行代码块。 - `until` 循环,与`while`相反,直到条件为真才停止执行。 例如,以下脚本将删除家目录下...

    Linux的Shell编程

    Linux的Shell编程是一种在Linux操作系统中进行自动化任务和脚本编写的技术。Shell是Linux系统中的一个命令解释器,它能够接收用户输入的命令并执行,同时也是一个强大的编程环境,允许用户编写Shell脚本来批量处理一...

    Linux Shell Scripting(linux shell编程)

    **Linux Shell编程**是一种用于自动化执行命令序列的脚本语言。它允许用户通过编写简单的脚本来完成复杂的任务,极大地提高了工作效率。对于初学者而言,了解Linux Shell编程的基础概念是非常重要的。 #### 二、...

    linux shell脚本

    除了Bash,还有其他几种Shell,包括: - **Bourne Shell (sh)**:这是最早的Unix Shell,由Stephen Bourne在1970年代末创建。 - **C Shell (csh)**:设计灵感来源于C语言语法,提供了更高级的编程特性。 - **Korn ...

    unix&shell\LINUX与UNIX SHELL编程指南.rar

    UNIX与Linux系统是两种广泛应用于服务器、超级计算机和个人计算机的操作系统,它们都依赖于强大的shell作为命令解释器,而shell编程则是充分利用这些系统的关键。 首先,我们需要了解什么是shell。在UNIX和Linux...

Global site tag (gtag.js) - Google Analytics