所以我知道我可以把她的刘海换成#!/usr/bin/env bash,我会为我的脚本这么做,但是我真的很想能用#!/bin/bash来运行很多脚本。有时候它很容易改变,有时不是,因为脚本是由其他东西运行的,而不是直接运行的,而且它是您不想接触的地方。
在我的系统配置中有什么选项可以让我在/bin/bash上获得一个链接,还有什么原因我不想这样做吗?为什么这不是标准呢?(请不要告诉我一些关于滑坡路的事情,/bin/bash可能是关于Unix系统最常见的假设之一)
发布于 2021-02-01 13:12:37
标准的POSIX是sh,而不是bash。因此,您可以假设POSIX系统将有一个与bourne兼容的shell,名为sh,但是没有理由假设它们将安装bash,也没有理由认为它们将在/bin/bash上安装。实际上,POSIX规范甚至不要求sh成为/bin/sh:
应用程序应该注意,不能假定shell的标准路径是/bin/sh或/usr/bin/sh,而应该通过询问getconf路径返回的路径来确定,确保返回的路径名是绝对路径名,而不是内置的shell。例如,要确定一些实现上的标准sh实用程序:命令-v sh的位置,可能会返回:/usr/xpg4 4/bin/sh--此外,在支持可执行脚本的系统上( "#!“)构造),建议使用可执行脚本的应用程序使用getconf -v安装它们,以确定shell路径名并更新"#!“脚本在安装时适当(例如,使用sed)。
因此,/bin/bash不规范的原因是bash不标准。这正是env存在的原因,也是为什么#!/usr/bin/env bash是这类事情的便携式解决方案。
也就是说,如果这是你的系统,那完全取决于你自己。没有理由不在/bin/bash中添加指向安装bash的位置的符号链接。例如,如果您的bash在/usr/bin中,您只需打开根shell并运行:
ln -s /usr/bin/bash /bin/bash只要您拥有系统,或者使用本地sysadmin清除该系统,就不会有任何问题。
https://unix.stackexchange.com/questions/632053
复制相似问题