Debian12的#!bash #!/bin/bash #!/bin/env bash #!/usr/bin/bash #!/usr/bin/env bash

bash脚本开头可写成 #!/bin/bash , #!/bin/env bash , #!/usr/bin/bash , #!/usr/bin/env bash

  • #!/bin/bash , #!/usr/bin/bash
  • #!/bin/env bash , #!/usr/bin/env bash

Debian12的 /bin/usr/bin 的软链接, /sbin/usr/sbin 的软链接, (Debian12默认没有ll命令,用的ls -l

bash 复制代码
root@88:~# ls -l /bin
lrwxrwxrwx 1 root root 7 Nov  1  2023 /bin -> usr/bin
root@88:~# ls -l /sbin
lrwxrwxrwx 1 root root 8 Nov  1  2023 /sbin -> usr/sbin

所以

  • #!/bin/bash#!/usr/bin/bash 是等价的,
  • #!/bin/env bash#!/usr/bin/env bash 是等价的

那么 #!/bin/bash#!/bin/env bash 有什么不同呢?

#!/bin/bash 是直接调用 bash 命令

#!/bin/env bash 是调用 env 命令, 且 bash 作为参数, 从而调用 bash

执行以下命令的效果一样, 都相当于执行了 bash 命令, 新开子bash

bash 复制代码
bash
/bin/bash
/usr/bin/bash
/bin/env bash
/usr/bin/env bash
  • 使用 env 调用 bash 提供了灵活性, 可以变化bash的位置或多版本,只要写到环境变量PATH就行。但也降低了安全性,比如将恶意的命名为bash的程序放入环境变量PATH并靠前 .

  • 直接调用 bash 则更加安全?(好像也牵强)

另外, 既然可以写成 #!/usr/bin/env bash 这样执行命令的形式,

那也可以写成 #!bash 这样的形式

可以写成这样

相关推荐
l1t1 分钟前
DeepSeek总结的使用实体-组件-系统和基于存在性处理进行Python编程39-40
开发语言·python
曾阿伦27 分钟前
Python 搭建简易HTTP服务
开发语言·python·http
YG亲测源码屋31 分钟前
java配置环境变量、jdk环境变量配置、java环境变量设置方法
java·开发语言
MIUMIUKK33 分钟前
从语法层面,看懂 Python 的特殊处
java·开发语言·python
FlyWIHTSKY35 分钟前
TS、TSX、JS、JSX 文件扩展名详解
开发语言·javascript·ecmascript
着迷不白38 分钟前
第一部分:认识python
开发语言·python
囚~徒~1 小时前
轻量化的虚拟机
linux·运维·服务器
SteveSenna1 小时前
Ubuntu 20.04 安装 Isaac Sim 4.5 + Isaac Lab
linux·运维·服务器
basketball6161 小时前
C++ 高级编程:2. 基本线程池实现
java·开发语言·c++