首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以在不修改FreeBSD的情况下运行Bash脚本吗?

问我可以在不修改FreeBSD的情况下运行Bash脚本吗?
EN

Unix & Linux用户
提问于 2012-08-05 08:16:28
回答 4查看 20.8K关注 0票数 8

如果我错了,请纠正我:

  • "sh“脚本!= "bash”脚本
  • Linux脚本是用Bash编写的。
  • Bash脚本通常是#!/bin/sh
  • 在GNU/Linux中,/bin/sh是Bash
  • 在FreeBSD中,/bin/sh不是bash,它是真正的sh

因此,如果我想在FreeBSD中使用Linux脚本,并且在shell中运行./script.sh,它将以"sh“而不是Bash运行Bash脚本,因为FreeBSD中的/bin/sh不是Bash。

有没有办法不用修改就可以运行那些Bash脚本?所以没有修改脚本文件中的#!/bin/sh语句来指向其他地方?

我想运行Bash脚本槽Zsh,如果可能的话。不想安装Bash,因为Zsh可以运行Bash脚本.

EN

回答 4

Unix & Linux用户

回答已采纳

发布于 2012-08-05 10:51:40

您可以使用脚本作为参数调用您最喜欢的shell。

代码语言:javascript
复制
bash ./script.sh
票数 7
EN

Unix & Linux用户

发布于 2015-01-30 09:35:13

我自己经营FreeBSD。我发现以以下方式启动脚本极大地提高了跨操作系统的兼容性:

代码语言:javascript
复制
#!/usr/bin/env bash
票数 3
EN

Unix & Linux用户

发布于 2017-08-17 08:55:04

当你错的时候你要求纠正你。我试试看:

  • Linux脚本是用bash编写的:嗯,有些是为bash编写的,另一些是为dash编写的,希望为任何符合POSIX的shell编写很多便携的脚本。
  • Bash脚本--通常是#!/bin/sh --如果它们依赖于非标准的bash特性,强烈建议使用#!/bin/bash shebang。
  • 在GNU/Linux中,/bin/sh是依赖于发行版的Bash。例如,它也可以是Debian上的dash或mksh。
  • 在FreeBSD中,/bin/sh不是bash,而是真正的sh。有很多sh实现。哪一个是“真的”?在FreeBSD上,sh基于Almquist shell,比如dash或NetBSD sh。在OpenBSD上,它基于pdksh,在许多商业单元上,它基于ksh88 (这是Unix/POSIX sh规范的基础)。一些ksh88-based shells和bash是仅有的两个已被认证为符合Unix的sh实现的shell(当使用正确的标志构建时和在正确的环境中构建时)。

如果您有带有/bin/sh shebang的脚本,并且希望它们由zsh执行,您可以尝试将脚本传递给zsh,但是一旦这个脚本调用另一个脚本(您不想修改它),它就会失败。

因此,我只看到从/bin/sh到您的zsh有一个符号链接的可能性。但我不建议这样做,因为它可能会对您的启动时间产生严重影响,甚至对您的一些linux脚本也没有任何帮助。

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

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

复制
相关文章

相似问题

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