通俗讲讲linux脚本⽂件以#!开头的原理
每⼀个脚本⽂件以#!开头,⽤来告诉shell需要指定哪⼀个解释器来进⾏执⾏(你发现什么错误没有?没错感叹号是!⽽不是!);
当某个解释器执⾏这个⽂件的时候,这⼀⾏就被当作注释⾏
所以你就明⽩了这⼀⾏对于shell来说就是识别并调⽤⼀个解释器来执⾏以下的命令语句,确定解释器之后,对于解释器来说这⼀⾏就是注释⾏
#!之后附带的路径,就是就⽤来解释脚本命令的⼆进制程序路径;
如果没有这⼀⾏,也就是说我们不写,我们在使⽤". /File" 执⾏的时候,默认使⽤bash解释器,当我们在脚本⾥⾯是bash可以解释的命令时候,⽂件执⾏正常;但是当我们在脚本⾥⾯是python expect或者其他语⾔的时候,⽂件⽆法执⾏会报错,得到 Command not found 警告
综上所述:
1. 使⽤ . 命令或者 source命令 我们必须加上 #!(path)
如果是bash解释器,我们就加上:#!/bin/bash
linux中文名
bash有诸如:ip ad sh ,ping,echo,grep,while,until,for等命令语句
如果是python解释器 ,我们就加上:#!/usr/bin/python
如果是expect解释器,我我们就加上:#!/usr/bin/expect
expect有诸如:spawn ,expect ,send ,exp_continue等命令语句
如果是perl解释器,我们就加上:#!/usr/bin/perl
注意:!不能是中⽂的!
注意:路径名必须正确,否则会得到 Command not found 警告
2. 如果是 "解释器 file"命令那么就可以不加第⼀⾏,⽐如:
bash file.sh
p
pathon file,py
但我建议你还是加上去
好的,下课!有问题留⾔