欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > linux下shell中使用上下键翻出历史命名时出现^[[A^[[A^[[A^[[B^[[B的问题解决

linux下shell中使用上下键翻出历史命名时出现^[[A^[[A^[[A^[[B^[[B的问题解决

2025/2/25 13:51:32 来源:https://blog.csdn.net/m0_45953836/article/details/145030422  浏览:    关键词:linux下shell中使用上下键翻出历史命名时出现^[[A^[[A^[[A^[[B^[[B的问题解决

前言

今天在使用linux的时候,使用上下键想翻出历史命令时,却出现[[A[[A[[A[[B^[[B这种东东,而tab键补全命令的功能也无法使用。最终发现是由于当前用户使用的shell是/bin/sh的原因。

解决方法

运行以下命令,将默认 shell 设置为 /bin/bash

echo $SHELL  //查看当前使用的是那个版本的shellsudo chsh -s /bin/bash 当前用户名 //将旧版的sh程序设置成新版的bash程序,设置后重新登录终端

SHELL 环境变量的变化需要在重新登录后生效。请执行以下步骤:

  1. 退出当前会话:
exit
  1. 重新登录到系统。
  2. 再次检查:
echo $SHELL

在这里插入图片描述

bash和sh的区别

bashsh 都是 UNIX 系统中的 shell 程序,但它们有一些显著的区别。以下是详细对比:


基本概念

  • **sh**** (Bourne Shell)**
    • 原始 shell,1979 年由 Stephen Bourne 开发。
    • 是 UNIX 和类 UNIX 系统上的标准 shell,功能简单,脚本兼容性强。
    • 许多操作系统使用 /bin/sh 作为默认 shell。
  • **bash**** (Bourne Again Shell)**
    • 是 GNU 项目开发的增强版 shell,1989 年由 Brian Fox 发布。
    • 基于 sh,向后兼容,同时增加了许多新功能,比如命令历史、数组支持等。
    • 是 Linux 系统上的默认 shell,大多数 Linux 发行版都使用 /bin/bash

功能对比

特性shbash
历史功能不支持命令历史支持,使用

导航历史记录
命令补全不支持支持,按 Tab
键补全文件和命令
数组支持不支持支持一维数组
整数运算使用外部命令 (expr
)
内建整数运算 ($(( ))
)
条件判断语法简单支持 (test
)
支持更高级的条件判断
脚本扩展功能基础脚本支持支持函数、数组、字符串操作等
错误调试功能有限支持 set -x
和调试选项

兼容性

  • sh 是许多系统脚本的标准,具有高度兼容性,尤其适用于 POSIX 标准环境。
  • bash 包含许多扩展特性,但部分功能在 POSIX 不兼容的环境中可能无法使用。

使用场景

  • **sh**
    • 使用脚本需要在不同平台上运行时(高兼容性)。
    • 编写简单、可靠的脚本,如启动脚本或基本任务。
  • **bash**
    • 编写复杂的自动化脚本,需用到高级功能(如数组和字符串操作)。
    • 在 Linux 环境中开发,且不考虑跨平台兼容性。

快速识别当前 shell

执行以下命令查看当前使用的 shell:

echo $SHELL

如果想查看正在运行的 shell 程序:

ps -p $$

总结

  • **sh**:轻量、兼容性强,适合简单任务。
  • **bash**:功能强大,扩展性高,是现代 shell 的首选工具。
    多数情况下,推荐使用 bash,因为它向后兼容 sh,并且提供了更多方便的功能。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词