解决在Shell切换用户后无法使用后退、上下左右键问题

    在Linux中为了安全,会将不同的程序运行在不同的用户下,当需要使用某些权限时,需要通过su来切换用户执行。为了省去su的步骤,我们往往会建一个同名的shell脚本,在其中通过su user -c "commond"的方式来执行程序。例如,在cdh版的hive中为了对文件有权限,需要su hdfs上(当然,你也可以改变hdfs上文件夹权限), 当打开hive后,往往按退格键会出现^H,这个可以在启动hive前,先通过stty erase ^H命令来消除退格的显示;按上下左右键会出现^[[A、^[[B、^[[C、^[[D,经过查资料,了解到这个跟readline library有关,可以安装一个readline包装器rlwrap来解决:

yum -y search readline rlwarp

    没有yum源的,可以下载rpm包安装,不做赘述。 

    然后在启动hive前,可以下执行stty erase ^H来消除退格键的显示,再通过rlwrap hive的方式来对hive命令行进行包装。该解决方案也适用于其他命令行工具,如Oracle的Sqlplus等。

 

以下是我包装的hive

#!/bin/bash
export HADOOP_HOME=${HADOOP_HOME:-/data/opt/hadoop}
export HIVE_HOME=/data/opt/hive

user=`whoami`
if [[ "$user" == "hdfs" ]];then
    exec $HIVE_HOME/bin/hive "$@"
else
    su hdfs -c "stty erase ^H;rlwrap $HIVE_HOME/bin/hive \"$*\""
fi

     将这个hive文件放到用户的环境变量下,在root或者其他具有su hdfs权限用户下,就可以直接通过hive正常访问HDFS和使用退格、上下左右键了。

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值