OS 基于 shebang
OS based shebang
我有很多用 Solaris
编写的脚本,它们使用像这样的 shebangs:
/usr/bin/sh
/usr/bin/ksh
我正在将代码移植到 Linux,其中解释器位于 /bin
。
有什么方法可以修改 shebang 以便脚本在 Solaris
和 Linux
中都可以工作
我希望我们不能像下面那样对 shebang 进行 OS 检查:
if [ $os == "Linux" ]
then
#!/bin/sh
else
#!/usr/bin/sh
fi
在 Linux 中添加链接是否可以,如下所示:
/usr/bin/sh --> /bin/sh
您不能按照您想要的方式执行选择性 shell,即 if
- then
构造不适用于 shell 指令第一个行。
您提到的最佳方法是创建指向现有 shell 的符号链接。或者,您需要遍历每个脚本并仅在脚本的第一行将“/usr/sbin”字符串替换为“/bin”(如果第一行以“#!”开头)。编写一段代码来遍历所有脚本并修改 shell 指令应该不会太难。
在 Solaris 中,/bin
链接到 /usr/bin
。因此 shebang 可以更改为 /bin/ksh
以在 OS
中工作
我有很多用 Solaris
编写的脚本,它们使用像这样的 shebangs:
/usr/bin/sh
/usr/bin/ksh
我正在将代码移植到 Linux,其中解释器位于 /bin
。
有什么方法可以修改 shebang 以便脚本在 Solaris
和 Linux
中都可以工作
我希望我们不能像下面那样对 shebang 进行 OS 检查:
if [ $os == "Linux" ]
then
#!/bin/sh
else
#!/usr/bin/sh
fi
在 Linux 中添加链接是否可以,如下所示:
/usr/bin/sh --> /bin/sh
您不能按照您想要的方式执行选择性 shell,即 if
- then
构造不适用于 shell 指令第一个行。
您提到的最佳方法是创建指向现有 shell 的符号链接。或者,您需要遍历每个脚本并仅在脚本的第一行将“/usr/sbin”字符串替换为“/bin”(如果第一行以“#!”开头)。编写一段代码来遍历所有脚本并修改 shell 指令应该不会太难。
在 Solaris 中,/bin
链接到 /usr/bin
。因此 shebang 可以更改为 /bin/ksh
以在 OS