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

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"

相关文章:

  • uniapp 手动调用form表单submit事件
  • C#,数值计算——插值和外推,曲线插值(Curve_interp)的计算方法与源程序
  • 【Oracle 客户端连接数据库过程解析】
  • 若依启动步骤
  • 数据采集与大数据架构分享
  • Spring Boot - filter 的顺序
  • 三十分钟学会zookeeper
  • uniapp app tabbar 页面默认隐藏
  • 【【萌新的SOC学习之 VDMA 彩条显示实验之一】】
  • 配置Nginx服务器用于Web应用代理和SSL{仅配置文件}
  • Eclipse切换中文环境
  • 解决公网下,k8s calico master节点无法访问node节点创建的pod
  • java回调函数
  • 2023.11.14 hivesql的容器,数组与映射
  • WPF中有哪些布局方式和对齐方法
  • [译]如何构建服务器端web组件,为何要构建?
  • 【React系列】如何构建React应用程序
  • CSS 专业技巧
  • Debian下无root权限使用Python访问Oracle
  • Fastjson的基本使用方法大全
  • Flannel解读
  • HTTP中GET与POST的区别 99%的错误认识
  • node学习系列之简单文件上传
  • Python学习之路13-记分
  • V4L2视频输入框架概述
  • Vue ES6 Jade Scss Webpack Gulp
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • 简单数学运算程序(不定期更新)
  • 微信小程序--------语音识别(前端自己也能玩)
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • 第二十章:异步和文件I/O.(二十三)
  • #pragma multi_compile #pragma shader_feature
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (分类)KNN算法- 参数调优
  • (附源码)计算机毕业设计高校学生选课系统
  • (一)Neo4j下载安装以及初次使用
  • (转)可以带来幸福的一本书
  • (转载)OpenStack Hacker养成指南
  • .NET 5种线程安全集合
  • .NET CORE 2.0发布后没有 VIEWS视图页面文件
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost
  • .Net中的集合
  • .net专家(张羿专栏)
  • []利用定点式具实现:文件读取,完成不同进制之间的
  • [Android]使用Android打包Unity工程
  • [CSS]中子元素在父元素中居中
  • [HTML]Web前端开发技术12(HTML5、CSS3、JavaScript )——喵喵画网页
  • [IE编程] IE中对网页进行截图的编程接口
  • [iHooya]2023年1月30日作业解析
  • [IMX6DL] CPU频率调节模式以及降频方法
  • [NOIP2004] 提高组 洛谷P1090 合并果子
  • [NOIP2007 普及组] 纪念品分组--贪心算法
  • [office] Excel自带的编辑函数求和方法 #其他#媒体
  • [PTP][1588v2] Follow_Up消息