Shell脚本之#!/bin/bash到底是什么意思
#!/bin/bash原理同python, 一定要加的原因是:
指明系统需要哪种shell解释用户的shell程序,如:#!/bin/sh,#!/bin/bash,#!/bin/csh,,#!/bin/tcsh和,#!/bin/ksh
以上是一些常见的shell。
Shell 既是一种脚本编程语言,也是一个连接内核和用户的软件
sh 是 UNIX 上的标准 shell,很多 UNIX 版本都配有 sh。sh 是第一个流行的 Shell。
bash 是 Linux 的默认 shell。
bash 由 GNU 组织开发,保持了对 sh shell 的兼容性,是各种 Linux 发行版默认配置的 shell。
bash 兼容 sh 意味着,针对 sh 编写的 Shell 代码可以不加修改地在 bash 中运行。尽管兼容,但是还是有一点区别的,不过可以不用关注,特殊场景可以使用 bash 代替 sh。
Shell查看
Shell 是一个程序,一般都是放在/bin或者/usr/bin目录下,当前 Linux 系统可用的 Shell 都记录在/etc/shells文件中。/etc/shells是一个纯文本文件,可以在图形界面下打开它,也可以使用 cat 命令查看它。
如果不清楚当前系统shell支持哪种,可以用命令:
cat /etc/shells
注:在现代的 Linux 上,sh 已经被 bash 代替,/bin/sh往往是指向/bin/bash的符号链接。
如果希望查看当前 Linux 的默认 Shell,那么可以输出 SHELL 环境变量:
echo $SHELL
Shell脚本执行
shell脚本的执行会开启新进程
Linux 中的每一个进程都有一个唯一的 ID,称为 PID,使用$$变量就可以获取当前进程的 PID
当前进程首先编写如下的脚本文件,并命名为 check.sh
sh执行开启新进程2946#!/bin/zsh
echo $$
在当前进程中运行 Shell 脚本
source 是 Shell 内置命令的一种,它会读取脚本文件中的代码,并依次执行所有语句。你也可以理解为,source 命令会强制执行脚本文件中的全部命令,而忽略脚本文件的权限。
source 命令的用法:
source filename
也可以简写为
. filename(我在Mac系统上尝试未成功)
两种写法的效果相同。对于第二种写法,注意点号.和文件名中间有一个空格。
当前进程中运行sh注:使用 source 命令不用给脚本增加执行权限,并且写不写./都行
总结:
在新进程中运行sh可以使用./check.sh,
在当前进程中运行sh可以使用. ./check.sh
网友评论