基于操作系统的shebang

时间:2015-01-13 06:13:38

标签: shell operating-system port

我有很多用Solaris编写的脚本,它们使用像这样的shebang:

/usr/bin/sh
/usr/bin/ksh  

我将代码移植到Linux,其中的解释器放在/bin中。

有没有办法修改shebang,以便脚本同时适用于SolarisLinux

我希望我们不能像下面那样对shebang进行操作系统检查:

if [ $os == "Linux" ]
then
    #!/bin/sh
else
    #!/usr/bin/sh
fi  

在Linux中添加链接是否可以,如下所示:

/usr/bin/sh --> /bin/sh

2 个答案:

答案 0 :(得分:0)

你不能以你想要的方式做一个选择性的shell,即if - then构造不能在第一个的shell指令上工作>行。

您提到的最佳方法是创建指向现有shell的符号链接。或者,您需要浏览每个脚本并替换' / usr / sbin'带' / bin'的字符串仅在脚本的第一行,如果第一行以"#!"开头。编写一段代码来完成所有脚本并修改shell指令不应该太难。

答案 1 :(得分:0)

在Solaris中,/bin链接到/usr/bin。因此,shebang可以更改为/bin/ksh以在OS中工作