博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
通俗讲讲linux脚本文件以 #! 开头的原理
阅读量:4223 次
发布时间:2019-05-26

本文共 912 字,大约阅读时间需要 3 分钟。

每一个脚本文件以#!开头,用来告诉shell需要指定哪一个解释器来进行执行(你发现什么错误没有?没错感叹号是!而不是!);

当某个解释器执行这个文件的时候,这一行就被当作注释行
所以你就明白了这一行对于shell来说就是识别并调用一个解释器来执行以下的命令语句,确定解释器之后,对于解释器来说这一行就是注释行
#!之后附带的路径,就是就用来解释脚本命令的二进制程序路径;
如果没有这一行,也就是说我们不写,我们在使用". /File" 执行的时候,默认使用bash解释器,当我们在脚本里面是bash可以解释的命令时候,文件执行正常;但是当我们在脚本里面是python expect或者其他语言的时候,文件无法执行会报错,得到 Command not found 警告
综上所述:
使用 . 命令或者 source命令 我们必须加上 #!(path)
如果是bash解释器,我们就加上:#!/bin/bash
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 警告
如果是 "解释器 file"命令那么就可以不加第一行,比如:
bash file.sh
expect file.exp
pathon file,py
但我建议你还是加上去
好的,下课!有问题留言
————————————————
版权声明:本文为CSDN博主「宇文忠」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_31789689/article/details/107906335

你可能感兴趣的文章
Oracle 11g 新特性 -- Database Replay (重演) 说明
查看>>
Oracle 11g 新特性 -- 自动诊断资料档案库(ADR) 说明
查看>>
Oracle 11g 新特性 -- RMAN Data Recovery Advisor(DRA) 说明
查看>>
CSDN博客之星 投票说明
查看>>
Oracle wallet 配置 说明
查看>>
Oracle smon_scn_time 表 说明
查看>>
VBox fdisk 不显示 添加的硬盘 解决方法
查看>>
Secure CRT 自动记录日志 配置 小记
查看>>
RMAN RAC 到 单实例 duplicate 自动分配通道 触发 ORA-19505 错误
查看>>
mysql 随机分页的优化
查看>>
DB2快速创建测试库
查看>>
利用db2look查看ddl
查看>>
SD卡驱动分析--基于高通平台
查看>>
[图文] Seata AT 模式分布式事务源码分析
查看>>
pm 源码分析
查看>>
Sending the User to Another App
查看>>
kmsg_dump
查看>>
Getting a Result from an Activity
查看>>
Allowing Other Apps to Start Your Activity
查看>>
dev/mem
查看>>