当前位置: 首页 > article >正文

Linux终端与交互式Bash

常用的Linux终端

  1. GNOME Terminal:GNOME 桌面环境下的默认终端程序,支持多个选项卡和配置。
  2. Konsole:KDE 桌面环境下的默认终端程序,提供了丰富的功能和选项。
  3. Terminator:开源的终端程序,支持多个可调整大小和布局的终端。
  4. lxterminal (LXDE 标配):是 LXDE 桌面环境下的默认终端程序.LXTerminal 相对其他终端程序比较简单和灵活,依赖少,轻量级. lxterminal 是最轻量级的终端,启动速度不亚于 Windows 的 cmd.exe

快捷键

Ctrl+L 清空屏幕 (功能相当于命令 clear)
Ctrl+U 剪切文本直到行的起始 (可以用于清空行)
Ctrl+K 剪切文本直到行的末尾
Ctrl+Y 粘贴最近剪切的文本
Ctrl+C 杀死当前进程 (也可以用来清空当前行)
Ctrl+D 退出当前 Shell (功能相当于命令 exit) 或者 删除当前的字符
Ctrl+A 行首
Ctrl+E 行尾
Home/End 行首 / 行尾
Ctrl+F 向前移动一个字符
Ctrl+B 向后移动一个字符
Ctrl+P 或 Ctrl+N 上下历史记录
上下方向键 上下历史记录
Ctrl+Shift+C 复制
Ctrl+Shift+V 粘贴
Tab 智能自动补全 (相当强大)
按住 Ctrl 键进行块选择.
鼠标中键:粘贴
Ctrl+Z 把程序放到后台返回终端
jobs 查看后台任务
fg NUM 切换到后台任务

终端与Bash的关系

终端是用户与计算机系统进行交互的界面。它提供了一个命令行界面,用户可以输入命令并查看命令的输出。终端通常是一个文本模式的界面,可以通过键盘输入命令,并显示命令的执行结果。终端可以是物理设备(如计算机的控制台终端)或软件应用程序(如在图形用户界面中打开的终端窗口)。

Bash 是一种命令行解释器(shell),它是许多 Unix 和 Linux 系统中默认的命令解释器。Bash 提供了一个交互式的命令行界面,用户可以在其中输入命令,并执行各种操作,包括执行程序、管理文件和目录、设置环境变量等等。Bash 还支持各种 shell 脚本和编程特性,可以用于编写自动化脚本和批处理任务。

在终端中,用户输入的命令会由终端传递给 Bash 解释器进行解析和执行。Bash 解释器负责解析命令行中的命令和参数,并执行相应的操作。Bash 还可以读取和执行各种配置文件(如 .bashrc、.bash_profile),这些文件中可以包含自定义的环境变量设置、别名、函数等,以及其他一些初始化设置。

交互模式运行Bash

在 Bash 中,使用 -i 选项以交互模式运行,会导致 Bash 将执行的命令作为交互式登录的一部分处理。这意味着 Bash 会加载一系列的配置文件和环境变量,以确保新的终端具有与当前终端相似的环境。

当 Bash 以交互模式登录时,会按照以下顺序加载配置文件和环境变量:

/etc/profile:这是全局配置文件,对所有用户有效。
~/.bash_profile 或 ~/.bash_login 或 ~/.profile:Bash 会按照该顺序尝试加载用户的个人配置文件,仅对当前用户有效。
/etc/bash.bashrc:这是全局配置文件,对所有用户有效。
~/.bashrc:Bash 会加载用户的个人配置文件,仅对当前用户有效。
这些配置文件和环境变量中可以包含设置环境变量、定义别名、修改提示符等等的操作。因此,当使用 -i 选项以交互模式运行 Bash 时,它会加载上述配置文件和环境变量,从而将当前终端的环境变量加载到新的终端中。

需要注意的是,加载的环境变量可能是对登录用户可用的全局变量,而非当前终端中自定义的临时变量。所以在某些情况下,使用 -i 选项可能会不完全复制当前终端的环境变量。

命令启动终端未加载环境变量问题

通过命令启动终端执行一个程序,有时候会发现没有加载环境变量,
例如执行下面的命令

lxterminal -e bash -c "bash $script;exec bash"

这个命令是重新启动一个终端,然后执行bash $script脚本,如果在script脚本中需要使用到一些环境变了,例如在.bashrc中添加的环境变量,此时就无法将环境变了添加到script的执行程序中去。
所以需要使用交互式的Bash运行,这样,当前的终端设置的环境变量就会传递到script的执行程序中。
修改上面的程序比较简单,只要增加-i就可以。

lxterminal -e bash -ic "bash $script;exec bash"

http://www.kler.cn/a/133862.html

相关文章:

  • MybatisPlus入门(十)MybatisPlus-逻辑删除和多记录操作
  • DevOps工程技术价值流:加速业务价值流的落地实践与深度赋能
  • 万字长文分析函数式编程
  • 灰狼优化算法
  • 知识库管理系统:企业数字化转型的加速器
  • 软件测试面试题(800道)【附带答案】持续更新...
  • 【数据分享】2023年我国省市县三级的独角兽企业数量(Excel/Shp格式)
  • 23111709[含文档+PPT+源码等]计算机毕业设计基于Spring Boot智能无人仓库管理-进销存储
  • 深度学习入门(第二天)——走进深度学习的世界 神经网络模型
  • 中级程序员——vue3+js+git面试题
  • 汽车虚拟仿真视频数据理解--CLIP模型原理
  • 【华为OD机试高分必刷题目】洗衣服(JavaPythonC++贪心算法实现)
  • 【数据结构(二)】单链表(3)
  • 三天吃透Redis面试八股文
  • ChatGPT之父被OpenAI解雇
  • 重生之我是一名程序员 35
  • map与set的封装
  • 【华为OD题库-027】代码编辑器-java
  • 设计模式-中介者模式-笔记
  • Perl的LWP::UserAgent库爬虫程序怎么写
  • 超大规模和隐私保护,融云如何助力 Web3 社交
  • C++ 20类型转换指南:使用场景与最佳实践
  • 软考小记-软件工程
  • 【LeetCode刷题-树】--654.最大二叉树
  • MySQL数据库索引以及使用唯一索引实现幂等性
  • 网络层——IP协议