首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在nixos上获得/bin/bash

如何在nixos上获得/bin/bash
EN

Unix & Linux用户
提问于 2021-02-01 12:42:24
回答 1查看 2.7K关注 0票数 2

所以我知道我可以把她的刘海换成#!/usr/bin/env bash,我会为我的脚本这么做,但是我真的很想能用#!/bin/bash来运行很多脚本。有时候它很容易改变,有时不是,因为脚本是由其他东西运行的,而不是直接运行的,而且它是您不想接触的地方。

在我的系统配置中有什么选项可以让我在/bin/bash上获得一个链接,还有什么原因我不想这样做吗?为什么这不是标准呢?(请不要告诉我一些关于滑坡路的事情,/bin/bash可能是关于Unix系统最常见的假设之一)

EN

回答 1

Unix & Linux用户

发布于 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并运行:

代码语言:javascript
复制
ln -s /usr/bin/bash /bin/bash

只要您拥有系统,或者使用本地sysadmin清除该系统,就不会有任何问题。

票数 3
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/632053

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档