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 选项可能会不完全复制当前终端的环境变量。

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

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

例如执行下面的命令

bash 复制代码
lxterminal -e bash -c "bash $script;exec bash"

这个命令是重新启动一个终端,然后执行bash $script脚本,如果在script脚本中需要使用到一些环境变了,例如在.bashrc中添加的环境变量,此时就无法将环境变了添加到script的执行程序中去。

所以需要使用交互式的Bash运行,这样,当前的终端设置的环境变量就会传递到script的执行程序中。

修改上面的程序比较简单,只要增加-i就可以。

bash 复制代码
lxterminal -e bash -ic "bash $script;exec bash"
相关推荐
无为之士1 分钟前
Linux自动备份Mysql数据库
linux·数据库·mysql
秋名山小桃子10 分钟前
Kunlun 2280服务器(ARM)Raid卡磁盘盘符漂移问题解决
运维·服务器
与君共勉1213811 分钟前
Nginx 负载均衡的实现
运维·服务器·nginx·负载均衡
岑梓铭17 分钟前
(CentOs系统虚拟机)Standalone模式下安装部署“基于Python编写”的Spark框架
linux·python·spark·centos
努力学习的小廉18 分钟前
深入了解Linux —— make和makefile自动化构建工具
linux·服务器·自动化
MZWeiei22 分钟前
Zookeeper基本命令解析
大数据·linux·运维·服务器·zookeeper
7yewh37 分钟前
嵌入式Linux QT+OpenCV基于人脸识别的考勤系统 项目
linux·开发语言·arm开发·驱动开发·qt·opencv·嵌入式linux
Arenaschi41 分钟前
在Tomcat中部署应用时,如何通过域名访问而不加端口号
运维·服务器
小张认为的测试41 分钟前
Linux性能监控命令_nmon 安装与使用以及生成分析Excel图表
linux·服务器·测试工具·自动化·php·excel·压力测试
waicsdn_haha1 小时前
Java/JDK下载、安装及环境配置超详细教程【Windows10、macOS和Linux图文详解】
java·运维·服务器·开发语言·windows·后端·jdk