linux下shell脚本执行方法及exec和source命令

linux下shell脚本执行方法及exec和source命令exec和source都属于bash内部命令(builtins commands),在bash下输入man exec或man source可以查看所有的内部命令信息。

bash shell的命令分为两类:外部命令和内部命令。

外部命令是通过系统调用或独立的程序实现的,如sed、awk等等。

内部命令是由特殊的文件格式(.def)所实现,如cd、history、exec等等。

在说明exe和source的区别之前,先说明一下fork的概念。

fork是linux的系统调用,用来创建子进程(child process)。

子进程是父进程(parent process)的一个副本,从父进程那里获得一定的资源分配以及继承父进程的环境。

子进程与父进程唯一不同的地方在于pid(process id)。

环境变量(传给子进程的变量,遗传性是本地变量和环境变量的根本区别)只能单向从父进程传给子进程。

不管子进程的环境变量如何变化,都不会影响父进程的环境变量。

shell script:
有两种方法执行shell scripts,一种是新产生一个shell,然后执行相应的shell scripts;一种是在当前shell下执行,不再启用其他shell。

新产生一个shell然后再执行scripts的方法是在scripts文件开头加入以下语句#!/bin/sh。

一般的script文件(.sh)即是这种用法。

这种方法先启用新的sub-shell(新的子进程),然后在其下执行命令。

另外一种方法就是上面说过的source命令,不再产生新的shell,而在当前shell 下执行一切命令。

source:
source命令即点(.)命令。

在bash下输入man source,找到source命令解释处,可以看到解释"Read and execute commands from filename in the current shell environment and ..."。

从中可以知道,source命令是在当前进程中执行参数文件中的各个命令,而不是另起子进程(或sub-shell)。

exec:
在bash下输入man exec,找到exec命令解释处,可以看到有"No new process is created."这样的解释,这就是说exec命令不产生新的子进程。

那么exec与source的区别是什么呢?
exec命令在执行时会把当前的shell process关闭,然后换到后面的命令继续执行。

合集下载

shell中的source命令的巧妙用法

shell中的source命令的巧妙用法

shell中的source命令的巧妙⽤法⾸先,通常⽤于重新执⾏刚修改的初始化⽂件,使之⽴即⽣效,⽽不必注销并重新登录。

例如,当我们修改了/etc/profile⽂件,并想让它⽴刻⽣效,⽽不⽤重新登录,就可以使⽤source命令,如source /etc/profile。

其次,source filepath或者. filepath,sh filepath或者./filepath区别:1. sh filepath会重新建⽴⼀个⼦shell,在⼦shell中执⾏脚本⾥⾯的语句,该⼦shell继承⽗shell的环境变量,但⼦shell是新建的,其改变的变量不会被带回⽗shell,除⾮使⽤export。

2. source filename其实只是简单地读取脚本⾥⾯的语句依次在当前shell⾥⾯执⾏,没有建⽴新的⼦shell。

那么脚本⾥⾯所有新建、改变变量的语句都会保存在当前shell⾥⾯。

因为不会建⽴新的⼦shell,变量的值都可以直接取到,我们看⼀个例⼦:我们可以把下⾯的这些配置当成shell脚本中的赋值语句,然后使⽤source获取变量的值,因为这个配置不符合任何ini之类格式,所以不好⽤程序获取:这⾥⽤到了&&,它的作⽤是左边的命令执⾏成功,才执⾏右边的命令;||就相反,左边的命令执⾏失败,才执⾏右边的命令。

2>/dev/nul下⾯看下内容详情标准输⼊0 从键盘获得输⼊ /proc/self/fd/0标准输出1 输出到屏幕(即控制台) /proc/self/fd/1错误输出2 输出到屏幕(即控制台) /proc/self/fd/2/dev/null代表linux的空设备⽂件,所有往这个⽂件⾥⾯写⼊的内容都会丢失,俗称“⿊洞”1. 2>/dev/null意思就是把错误输出到“⿊洞”2. >/dev/null 2>&1默认情况是1,也就是等同于1>/dev/null 2>&1。

linux -exec用法

linux -exec用法

linux -exec用法什么是Linux中的exec命令及其用法?在Linux操作系统中,exec是一个非常有用的命令。

它用于执行系统中的可执行文件,将进程的一部分或整个代码段替换为新的可执行文件内容。

exec命令可以让我们在一个进程中运行另一个可执行文件,并且可以传递参数。

exec命令有多种形式和用途。

最常用的形式是execvp(),它接受一个文件名和一个字符串数组作为参数。

在本文中,我们将详细讨论exec命令的各种用法,并给出一些实际的例子。

1. execvp()命令的基本用法execvp()命令的基本语法如下:int execvp(const char *file, char *const argv[]);其中,file是要执行的可执行文件的文件名,argv是一个字符串数组,用于传递给可执行文件的参数。

数组中的第一个元素通常是可执行文件的名称。

如果execvp()命令执行成功,它将替换当前进程的代码段,并在新的代码段中执行指定的可执行文件。

如果execvp()命令执行失败,它将返回-1,并且当前进程的状态将保持不变。

让我们来看一个简单的示例,演示execvp()命令的基本用法:#include <stdio.h>#include <unistd.h>int main() {char *cmd[] = {"ls", "-l", NULL};execvp(cmd[0], cmd);printf("execvp() failed\n");return 0;}在这个例子中,我们创建了一个字符串数组cmd,其中包含ls命令和-l 参数。

然后,我们调用execvp()命令来执行ls命令。

如果execvp()命令执行成功,它将打印出当前目录的内容。

否则,它将打印出"execvp() failed"。

shell重新加载环境变量的方法

shell重新加载环境变量的方法

shell重新加载环境变量的方法在Shell中,如果你想重新加载环境变量,通常有几种方法可以做到这一点。

以下是一些常见的方法:1. source命令或点命令:使用`source`命令(在大多数Shell中也可以使用`.`代替`source`)可以直接读取并执行文件中的命令。

如果这个文件是一个配置文件,如`.bashrc`、`.bash_profile`、`.profile`等,那么重新加载环境变量就变得很简单。

```bashsource ~/.bashrc```或者```bash. ~/.bashrc```2. exec命令:使用`exec`命令可以替换当前的shell进程,使用新的配置启动它。

这样,所有的环境变量都会被重新加载。

```bashexec bash```3. 重启终端:这是一种简单但比较笨的方法。

关闭当前的终端窗口并重新打开一个新的终端窗口。

这会加载新的环境变量和配置。

4. 使用env命令:`env`命令会显示当前所有的环境变量。

如果你想查看某个特定的环境变量,你可以这样做:```bashecho $VARIABLE_NAME5. 使用set命令:`set`命令可以显示所有的shell变量(不仅仅是环境变量)。

如果你想查看所有的环境变量,你可以这样做:```bashset -o posix ; set grep ^declare grep -v 'declare' sed 's/declare -x //' grep -v'^\(LS_COLORS\PATH\MANPATH\LESSOPEN\LESSCLOSE\PWD\OLDP WD\IFS\SHELLOPTS\HOME\LOGNAME\)'```这会显示所有的环境变量,并排除一些常见的非环境变量。

6. 使用export命令:你可以使用`export`命令直接设置或修改环境变量的值。

linux调用python的方法

linux调用python的方法

linux调用python的方法一、前言Linux是一个强大的操作系统,广泛应用于服务器和超级计算机。

Python是一种易于阅读和理解的编程语言,广泛应用于数据分析和人工智能领域。

在Linux中,我们可以使用多种方法来调用Python 脚本。

本文将介绍一些常用的方法,帮助您在Linux中轻松调用Python脚本。

二、使用命令行调用Python脚本在Linux中,我们可以通过命令行来调用Python脚本。

通常,我们可以使用以下命令来执行Python脚本:```shellpython 文件名.py```其中,“python”是Python解释器的常用命令,“文件名.py”是要执行的Python脚本的文件名。

如果您的Linux系统中安装了多个Python版本,您可能需要使用“python3”命令来代替“python”。

三、使用Shell脚本调用Python脚本除了直接使用命令行调用Python脚本外,我们还可以将Python 脚本作为Shell脚本的一个命令来执行。

在Shell脚本中,我们可以使用“source”或“.”命令来执行当前目录中的Python脚本。

例如:```shellsource path/to/script.sh```或者:```shell. path/to/script.sh```其中,“path/to/script.sh”是要执行的Python脚本的文件名。

这种方式可以让Shell脚本调用Python脚本,并传递参数和获取输出。

四、使用系统服务调用Python脚本在Linux中,我们可以将Python脚本注册为一个系统服务,这样就可以通过系统工具来调用该服务。

注册系统服务需要编写一些配置文件和脚本来实现。

例如,可以使用systemd服务来注册Python脚本。

systemd是一种用于Linux系统的轻量级启动管理器,可以方便地管理服务、进程和资源。

在systemd中,我们可以创建一个以“.service”为扩展名的配置文件,用于描述服务的属性和行为。

Linux Shell编程——脚本的建立执行

Linux Shell编程——脚本的建立执行

脚本的执行
7
(3)第三种方法是在pdksh和bash下使用 . 命令,或在tcsh下使用source命令。
例如,在pdksh和bash下执行上面的shell脚本:
# . myshell
要注意. 和shell脚本文件名之间有一个空格。
在tcsh下执行上面的shell脚本:
# source myshell
Linux Shell编程 ——建立脚本
Linux Shell编程
2
Shell提供了用户与操作系统与用户之间通讯的方式 ➢ 交互式方式 ➢ 非交互方式
Shell编程: Shell本身就是一个解释型的程序语言,它支持函数、变 量、数组和分支、循环等程序控制结构。
Linux Shell编程
3
Shell有多种不同的版本,如sh、Bourne Shell、ash、csh、tcsh、 ksh、bash、POSIX Shell等。
. 命令和source命令的执行方式,在bash下一样可以使用。
(2)如使用C shell,可用以下方式: #C shell Script 或者 #! /bin/csh
(3)使用Linux默认的bash shell: #! /bin/bash
脚本的执行

6
(1)使用chmod命令把shell脚本的权限设置为可执行,这样就可以在提示符下直接执行。 例如:# chmod +X myshell
如果shell脚本以“#!”开头,则“ #!”后面所跟的字符串就是所使用的 shell的绝对路径名。Bourne shell的路径名称为/bin/sh,而C shell则为 /bin/csh。
建立脚本
5
例如:
(1)如使用Bourne shell,可用以下方式: echo enter filename 或者 #! /bin/sh

简述运行shell script的方法。

简述运行shell script的方法。

简述运行shell script的方法。

运行shell script 的方法可以有多种,以下是几种常用的方法:
1. 在命令行执行脚本:可以直接在命令行终端输入脚本的路径,例如
/path/to/script.sh,按下回车键即可运行脚本。

2. 添加执行权限后直接执行:可以使用chmod 命令赋予脚本执行权限,例如chmod +x /path/to/script.sh,然后直接输入脚本路径运行即可。

3. 使用 . 命令运行脚本:可以使用 . 命令(点号)来运行脚本,例如 .
/path/to/script.sh,这种方式会在当前shell 中运行脚本,可以使用该脚本中的变量和别名。

4. 使用source 命令运行脚本:也可使用source 命令(或其简写命令 .),例如source /path/to/script.sh,与 . 命令类似,该命令会在当前shell 中运行脚本,也可以使用其中定义的变量和别名。

总之,这些都是使用shell 脚本的常用方法,可以根据实际需要选择适合自己的方式来运行脚本。

Linux13:shell脚本基本命令

Linux13:shell脚本基本命令shell脚本基本命令输出命令echo输出命令echo,基本模式就是echo [选项] [输出内容]输出内容如果包含空格,则必须将内容⽤双引号括起来。

选项-e可以使输出语句⽀持反斜线转义。

加⼊退格后就不会显⽰退格符左边的⼀个字符。

ascii码表中有对应的⼋进制和⼗六进制表⽰法,所以可以表⽰对应的字符。

显⽰环境变量的值:echo ${PATH}或echo $PATH,如果⼀个变量没有被设定,那么就什么都不返回。

颜⾊输出如将abcd⽤红⾊打印:echo -e "\e[1;31m abcd \e[0m"其中\e[1的意思是开启颜⾊输出,⽽\e[0m是结束颜⾊输出,31m代表红⾊,abcd是输出内容,其他颜⾊如下:第⼀个脚本与脚本执⾏⽅式新建⼀个脚本hello.sh:#!/bin/bash#the first programecho "hello world"exit 0其中第⼀⾏是声明,不是注释,不能省略,这是在指定使⽤哪个shell,如果没有这⾏有的程序可能⽆法执⾏。

第⼆⾏#开头的是注释,第四⾏是命令。

最后⼀⾏在设置回传值,在执⾏完该脚本后,执⾏echo $?就能查看这个值,可以通过这个⾃定义错误信息。

在脚本中有需要时要重新定义⼀下PATH环境变量,以便直接使⽤⼀些外部命令⽽不是写绝对路径:PATH=/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/module/jdk1.8.0_144/bin:/opt/module/hadoop-2.7.2/bin:/opt/module/hadoop-2.7.2/sbin:/root/bin export PATH执⾏shell脚本要先赋予其可rx权限:chomd 755 hello.sh然后再执⾏./hello.sh这⾥也可以⽤绝对路径执⾏。

linuxshell命令行参数

linuxshell命令行参数Linux shell 命令行参数是指在执行命令时可以传递给命令的一些选项或参数,用来修改命令的行为或执行特定的操作。

在 Linux 系统中,命令行参数通常以`-`或`--`开始,后面跟着选项的名称或参数的值。

以下是一些常见的 Linux shell 命令行参数及其用法:1. `-a` 或 `--all`:显示所有文件和目录,包括隐藏文件。

2. `-l` 或 `--long`:以长格式显示文件和目录的详细信息,包括权限、所有者、大小等。

3. `-h` 或 `--human-readable`:以人类可读的格式显示文件和目录的大小。

4. `-r` 或 `--recursive`:递归地执行命令,包括子目录。

5. `-f` 或 `--force`:强制执行命令,忽略警告或错误。

6. `-i` 或 `--interactive`:交互式地执行命令,需要用户确认或输入。

7. `-n` 或 `--numeric-sort`:按照数字顺序对输出进行排序。

8. `-s` 或 `--size`:按照文件或目录的大小进行排序。

10. `-u` 或 `--user`:以用户的身份执行命令。

11. `-g` 或 `--group`:以组的身份执行命令。

12. `-e` 或 `--execute`:执行命令或脚本文件。

13. `-v` 或 `--verbose`:显示详细的输出信息。

14. `-q` 或 `--quiet`:不显示任何输出信息。

15. `-d` 或 `--directory`:指定要操作的目录。

16. `-p` 或 `--preserve`:保留文件或目录的元数据,如权限、所有者等。

17. `-x` 或 `--extract`:解压缩文件或目录。

18. `-z` 或 `--gzip`:使用 gzip 压缩文件或目录。

19. `-c` 或 `--count`:统计文件或目录的数量。

Linux。创建和执行Shell脚本

Linux。

创建和执行Shell脚本
Shell脚本是一种使用用户环境Shell提供的语句所编写的
命令文件。

它可以包含任意从键盘输入的Linux命令。

创建Shell脚本的步骤与建立普通文本文件的方式相同。

可以利用文本编辑器(如gedit或vi)进行程序录入和编辑加工。

例如,在look目录下建立一个名为greeting的Shell脚本。

可以在look目录下,右键单击鼠标右键,在弹出的快捷菜单
中执行“创建文档”→“空文档”命令,创建一个空白文档并重命
名为greeting。

编辑完greeting文件后,可以像运行其他Linux命令那样
执行它了。

执行Shell脚本的语法格式为“.文件名”,使用输入
重定向方式让Shell从给定的文件中读入命令行,并进行相应
处理。

在Shell脚本中,以“#”开头的行是注释行,在执行时会被忽略。

特别是其中的第1行“#!/bin/bash”,用来指定脚本以bash执行。

如果要设置以tcsh执行,则应设成“#!XXX”。

要指
定执行的Shell时,一定要将它写在第1行;如果没有指定,则以当前正在执行的Shell来解释。

linux中shell script 的方式

linux中shell script 的方式Linux中的Shell Script (脚本)是一种强大的编程方式,可以用于自动化任务、批量处理和系统管理等方面。

本文将逐步回答关于Shell Script的问题,让读者了解它的基本概念、特点和使用方法。

第一部分:Shell Script的基本概念和用途(400-500字)Shell Script是一种文本文件,其中包含了一系列Shell命令。

Shell是操作系统内核与用户交互的接口,可以理解为命令解释器。

Shell Script可以编写一系列命令以实现特定任务的自动化执行,大大提高了工作效率。

Shell Script主要用于以下几个方面:1. 自动化任务:Shell Script可以在特定时间或条件下自动执行任务,如定期备份数据、生成报告等。

2. 批量处理:通过Shell Script可以快速进行批量操作,如文件重命名、批量安装软件等。

3. 系统管理:Shell Script可以用于系统管理,如监控系统资源、管理用户账户等。

第二部分:Shell Script的编写流程(600-800字)编写一个Shell Script通常需要经过以下步骤:1. 选择合适的Shell类型:Linux系统中常见的Shell类型有bash、sh、ksh等,选择适合自己的Shell类型。

2. 创建Shell Script文件:使用文本编辑器创建一个新的Shell Script文件。

通常以.sh作为文件扩展名。

3. 添加脚本声明:在脚本文件的第一行添加脚本声明,指定要使用的Shell 类型,如`#!/bin/bash`。

4. 添加注释:在脚本中添加注释,解释脚本的用途、功能和使用方法。

注释以`#`开头。

5. 编写脚本代码:在脚本文件中添加Shell命令,按照自己的需求进行编写。

命令之间可以使用分号或换行进行分隔。

6. 保存并退出:保存脚本文件,并使用`chmod +x script.sh`命令给脚本添加执行权限。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档