源码环境:
$ uname -a
SunOS machine1 5.10 Generic_150400-63 sun4u sparc SUNW,SPARC-Enterprise
$ pwd
/
$ ls -l /bin/sh
lrwxrwxrwx 1 root root 13 Nov 1 19:39 /bin/sh -> ../../sbin/sh
目标环境:
$ pwd
/root
$ ls -l /bin/sh
lrwxrwxrwx. 1 root root 4 Jul 16 12:10 /bin/sh -> bash
$ cat /etc/system-release
Red Hat Enterprise Linux Server release 7.5 (Maipo)
在目标环境中,我们#!/bin/sh
在每个脚本中使用 shebang 行
Solaris 环境中的 Shell 脚本使用 shebang 行#!/usr/bin/ksh
和#!/bin/sh
目标是将 shell 脚本从 Solaris 10 迁移到 RHEL 7.5
1)脚本是用solaris korn shell & /bin/sh
shell编写的,符合 posix 标准?用于无缝迁移到 bash(在 Linux 中),无需验证代码。
2) 如果不是,将脚本迁移到 Linux 之前需要进行哪些验证?
答案1
您可以不是 不看代码就迁移它。您需要在安全环境中测试运行脚本,并将结果与 Solaris 上相同测试的预期结果进行比较。您还应该调查两个系统上的失败条件是否相同(丢失文件、无效数据等)。
POSIX 的方式并不重要贝壳脚本是为其编写的,因为脚本很可能调用非 POSIX 或 Solaris 特定的实用程序或使用非 POSIX shell 扩展。他们还可能对需要针对 Linux 进行更新的环境(文件所在的位置、调用哪些设备和接口等)做出假设。
ksh
Solaris 上的 shell是很不一样来自bash
Linux 上,因此您根本不能指望脚本在 Linux 中或Linux 上ksh
“运行” 。sh
bash