067_扩展篇_Shell编程(二)_Shell脚本入门 一般Shell脚本后缀名约定俗成是.sh,但是后缀名无所谓。 # 注释 = 赋值 开头第一行是 选择命令行解析器 #!/bin/sh #!/bin/bash 创建一个shell脚本,输出 hello world #!/bin/bash echo "hello world" 脚本的常用执行方式 第一种 采用bash或sh+脚本的相对路径或绝对路径(不用赋予脚本+x权限) sh ./hello.sh sh /home/ruchuruo/hello.sh bash ./hello.sh bash /home/ruchuruo/hello.sh 第二种 采用输入脚本的相对路径或绝对路径执行脚本(必须具有可执行权限+x) ./hello.sh /home/ruchuruo/hello.sh 如果直接输入文件名字会默认去找命令,而不是执行脚本 [root@hadoop100 t]# hello.sh bash: hello.sh: 未找到命令... 第三种 在脚本的路径前加上"." 或者 source . hello.sh source hello.sh source命令是一个内置的shell命令,借鉴了cshell(csh)实现。 另外一种实现是bash,也就是这个"."。 一般的Linux发行版对source和"."都支持,这两种写法也等价。 使用sh、bash、./ 执行的脚本会打开一个 子shell, 所谓子shell,即从当前shell环境中新开了一个shell环境, 这个新开的shell环境就是子shell,而开启子shell的环境称为该子shell的父shell。 source和"."不会开启 子shell,而是在当前环境中执行脚本。 子shell会从父shell中继承很多环境, 如变量、命令全路径、文件描述符、当前工作目录、陷阱等等, 但子shell有很多种类型,不同类型的子shell继承的环境不相同。 注意:子 Shell 虽然能使用父 Shell 的的一切, 但是如果子 Shell 对数据做了修改,比如修改了全局变量, 那么这种修改只能停留在子 Shell,无法传递给父 Shell。 不管是子进程还是子 Shell,都是“传子不传父”。 https://www.cnblogs.com/Rohn/p/14111943.html 还有另一种情况要使用source,比如修改了环境变量, /etc/profile 如果没有及时生效,需要 source /etc/profile 立即生效