在 AIX 上运行 Linux Shell

Posted

技术标签:

【中文标题】在 AIX 上运行 Linux Shell【英文标题】:Running Linux Shell on AIX 【发布时间】:2019-09-05 04:36:44 【问题描述】:

我试图在 AIX 上执行一个 shell 脚本,但它失败了,因为在 ksh 中无法识别来自 shell 的一些声明/指令(如 readarray、数组声明、带有特定参数的日期命令等) p>

我想在 AIX 上执行这个 linux 脚本而不用 ksh 重写整个脚本。

我尝试使用 #!/usr/bin/env bash#!/bin/sh 等不同的 shebang 运行脚本,但 AIX 似乎仍在通过 ksh 运行它。

有人有在 AIX 上运行 linux shell 的解决方案吗?

« AIX Toolbox for Linux Applications » 似乎提供了在 AIX 上执行 linux shell。

有人可以确认我的信息吗?

如何检查 AIX Toolbox 是否已安装在 AIX 服务器上? (我没有此服务器的管理权限)

如何执行 AIX Toolbox 来运行 shell 脚本?

提前感谢您的帮助

【问题讨论】:

您的意思是,您希望运行 bash 脚本(“Linux 脚本”现在使用简约的 dash 来实现兼容性)。这是可能的,如果你安装 bash。您可能已经在 /opt/freeware/bin 中安装了它——检查一下。 请注意 date(1) 不是外壳的一部分; AIX!date 不如 GNU!date。 如果你想编写跨平台的 shell 脚本,最好的办法是只坚持 posix shell 的特性,只使用 posix 描述的程序(和选项)。 【参考方案1】:

从link 可以看出,您可以安装 AIX Toolbox for Linux Applications,您将拥有bash。你也可以只下载这个包并安装它。

安装后,您可以像操作系统中的任何其他程序一样执行bash

但一般来说,尝试在 AIX 或 HP-UX 上运行 linux 脚本时会遇到很多挑战。

【讨论】:

感谢您的回答,但经过验证,bash 似乎已经安装在此服务器上。 @Romain,在这种情况下将其添加到 PATH 变量中并【参考方案2】:

你可以使用 bash!需要从here 安装yum。安装 yum 后,它将自动安装 bash 包。 放入一个临时的空文件夹,解压并安装所有 RPM:rpm -Uvh *.rpm

最后编辑/etc/security/login.cfg anb 和“/usr/bin/bash”:

shells = /bin/sh,/bin/bsh,/bin/csh,/bin/ksh,/bin/tsh,/bin/ksh93,/usr/bin
/sh,/usr/bin/bsh,/usr/bin/csh,/usr/bin/ksh,/usr/bin/tsh,/usr/bin/ksh93,/usr/bin/
rksh,/usr/bin/rksh93,/usr/sbin/uucp/uucico,/usr/sbin/sliplogin,/usr/sbin/snappd,
/usr/bin/bash

将路径/usr/bin/bash添加到/etc/shells

# echo “/usr/bin/bash” >> /etc/shells

将 shell 更改为 se bash:

# chuser shell=/usr/bin/bash root

在 root 的家中创建一个新的.bash_profile

# .bash_profile
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
PS1="[\u@\h \w]\$ "
export PS1

用root登录,你会看到这样的东西:

[root@aixserver ~]#

【讨论】:

以上是关于在 AIX 上运行 Linux Shell的主要内容,如果未能解决你的问题,请参考以下文章

如何在 AIX 中将 jar 文件作为服务运行,如果崩溃将自动重启?

使用 AIX 的 ksh 实现以非交互模式读取配置文件脚本

有啥方法可以在 Linux/AIX 中从 ksh 更改进程名称?

#yyds干货盘点#AIX shell工具集

获取 AIX 上正在运行的进程的可执行文件的完整路径

Mac上如何运行shell脚本(变为可执行文件)