以下切换ksh到bash在攀商行yypt(银银合作)平台测试:
1.
#echo $SHELL
/bin/ksh
#which bash
/usr/bin/bash
#cd /usr/bin
#bash // 执行后提示错误
不能切换到bash,错误提示貌似是找不到libintl.so.8,查看/opt/freeware/lib/下有libintl.a,而没有libintl.so.8
2.
下载bash-3.2-1.aix5.2.ppc.rpm,通过FTP上传到到/opt/freeware/packages/
#cd/opt/freeware/packages/
#rpm -ivh bash-4.2-3.aix5.3.ppc.rpm
file /opt/freeware/bin/bash from install of bash-4.2-3 conflicts with file from package bash-3.0-1file /bin/bash from install of bash-4.2-3 conflicts with file from package bash-3.0-1file /opt/freeware/bin/bashbug from install of bash-4.2-3 conflicts with file from package bash-3.0-1
......(省略)
......(省略)
#rpm -Uvh --oldpackage bash-4.2-3.aix5.3.ppc.rpm // 网上说这里是在升级老包
#cd /usr/bin
#bash// 无提示表明切换成功
3.
在修改之前,需要先更改系统安全设置,在可用shell 列表中加上 bash 。编辑 /etc/security/login.cfg ,在 shell 列表在usw后面添加,/bin/bash(安装bash-4.2-3.aix5.3.ppc.rpm后,应该会在/bin下面生成bash)
#vi /etc/security/login.cfg
usw:
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,/bin/bash
maxlogins = 32767
logintimeout = 60
auth_type = STD_AUTH
保存并退出
4.
usermod –s /usr/bin/bash username
#usermod -s /bin/bash yypt // 指定yypt用户使用/bin/bash
修改shell 后重新登录系统,默认 shell 就改变为bash了。
5.
问题:值的注意的是,在之前登录shell默认为ksh时,系统读取了.profile文件,也貌似读取了.kshrc文件(里面设置了很多银银平台需要的环境变量),但切换到bash登录shell后,读取了.profile,貌似没有读取.kshrc文件,于是打开.profile,找到一下部分:
if [ -f $HOME/.kshrc -a -r $HOME/.kshrc ]; then
ENV=$HOME/.kshrc # set ENV if there is an rc file
export ENV
fi
在这里貌似没有执行.kshrc,于是添加语句如下:
if [ -f $HOME/.kshrc -a -r $HOME/.kshrc ]; then
ENV=$HOME/.kshrc # set ENV if there is an rc file
source $HOME/.kshrc # add by ycc
export ENV
fi
保存退出。
6.
#vi .kshrc
修改!#/bin/ksh为!#/bin/bash
保存退出,重新登录shell,发现已经添加上程序需要的环境变量。但比较之前ksh环境下和现在bash环境下环境变量,差异如下:
通过查找资料,暂时发现此差异对程序执行并无影响。
想要切换到ksh,只要按照此方法设置为ksh即可。