bash

bash

  • 启动器
  • 解释器
    • 用户交互式输入
    • 文本文件输入

source 从当前shell环境中执行一个命令文件。

  • 脚本的本质
    • 启动一个子进程;
    • 启动一个子程序;
    • 以启动的子进程或者子程序读取文件;
    • #!/bin/bash (默认情况,直接执行一个bash)
    • #!/usr/bin/bash(指定bash环境)
  • 读取方式
    • source以当前bash读取文件;
    • .以当前bash读取文件;
    • bash以新建子bash读取文件;
    • ./以新建子bash读取文件(chmod +x file 将文件变为可执行程序才可使用该方法)
`编写需要执行的命令到文件中保存`
[root@localhost ~]# vi sh.sh
ls /
echo "hello"
`查看当前的bash环境`
[root@localhost ~]# echo $$
1536
`以当前的bash环境执行文件`
[root@localhost ~]# source sh.sh
bin   dev  file   home  lib64       media  opt   root  selinux  sys  usr
boot  etc  file1  lib   lost+found  mnt    proc  sbin  srv      tmp  var
hello
init─┬─auditd───{auditd}
     ├─crond
     ├─dhclient
     ├─login───bash
     ├─master─┬─pickup
     │        └─qmgr
     ├─5*[mingetty]
     ├─rsyslogd───3*[{rsyslogd}]
     ├─sshd───sshd───bash───pstree
     └─udevd───2*[udevd]
[root@localhost ~]# vi sh.sh
ls /
echo "hello"
pstree
`以当前的bash环境执行文件`
[root@localhost ~]# source sh.sh
bin   dev  file   home  lib64       media  opt   root  selinux  sys  usr
boot  etc  file1  lib   lost+found  mnt    proc  sbin  srv      tmp  var
hello
init─┬─auditd───{auditd}
     ├─crond
     ├─dhclient
     ├─login───bash
     ├─master─┬─pickup
     │        └─qmgr
     ├─5*[mingetty]
     ├─rsyslogd───3*[{rsyslogd}]
     ├─sshd───sshd───bash───pstree
     └─udevd───2*[udevd]
1536
`新建一个子bash执行文件`
[root@localhost ~]# bash sh.sh
bin   dev  file   home	lib64	    media  opt	 root  selinux	sys  usr
boot  etc  file1  lib	lost+found  mnt    proc  sbin  srv	tmp  var
hello
init─┬─auditd───{auditd}
     ├─crond
     ├─dhclient
     ├─login───bash
     ├─master─┬─pickup
     │        └─qmgr
     ├─5*[mingetty]
     ├─rsyslogd───3*[{rsyslogd}]
     ├─sshd───sshd───bash───bash───pstree
     └─udevd───2*[udevd]
1556
`查看当前的bash环境和执行文件的shell环境进行对比`
[root@localhost ~]# echo $$
1536
`在文件中添加指定的bash环境`
[root@localhost ~]# vi sh.sh
#! /bin/bash  读取文件时会新建一个shell环境
ls /
echo "hello"
pstree
echo $$
`但source仍以当前bash环境执行该文件`
[root@localhost ~]# source sh.sh
bin   dev  file   home  lib64       media  opt   root  selinux  sys  usr
boot  etc  file1  lib   lost+found  mnt    proc  sbin  srv      tmp  var
hello
init─┬─auditd───{auditd}
     ├─crond
     ├─dhclient
     ├─login───bash
     ├─master─┬─pickup
     │        └─qmgr
     ├─5*[mingetty]
     ├─rsyslogd───3*[{rsyslogd}]
     ├─sshd───sshd───bash───pstree
     └─udevd───2*[udevd]
1536
`将文件变为可执行的二进制文件`
[root@localhost ~]# chmod +x sh.sh
[root@localhost ~]# ls
anaconda-ks.cfg  file3  install.log  install.log.syslog  sh.sh
`将会新建一个子shell执行文件`
[root@localhost ~]# ./sh.sh
bin   dev  file   home	lib64	    media  opt	 root  selinux	sys  usr
boot  etc  file1  lib	lost+found  mnt    proc  sbin  srv	tmp  var
hello
init─┬─auditd───{auditd}
     ├─crond
     ├─dhclient
     ├─login───bash
     ├─master─┬─pickup
     │        └─qmgr
     ├─5*[mingetty]
     ├─rsyslogd───3*[{rsyslogd}]
     ├─sshd───sshd───bash───sh.sh───pstree
     └─udevd───2*[udevd]
1566
`将读取文件新建bash删除`
[root@localhost ~]# vi sh.sh
ls /
echo "hello"
pstree
echo $$
`将会以当前bash执行文件`
[root@localhost ~]# ./sh.sh
bin   dev  file   home	lib64	    media  opt	 root  selinux	sys  usr
boot  etc  file1  lib	lost+found  mnt    proc  sbin  srv	tmp  var
hello
init─┬─auditd───{auditd}
     ├─crond
     ├─dhclient
     ├─login───bash
     ├─master─┬─pickup
     │        └─qmgr
     ├─5*[mingetty]
     ├─rsyslogd───3*[{rsyslogd}]
     ├─sshd───sshd───bash───bash───pstree
     └─udevd───2*[udevd]
1570
[root@localhost ~]# echo $$
1536
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值