• 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"
    
    • 1

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

    lxterminal -e bash -ic "bash $script;exec bash"
    
    • 1
  • 相关阅读:
    【AI Agent系列】【MetaGPT多智能体学习】4. 基于MetaGPT的Team组件开发你的第一个智能体团队
    Spring5框架学习笔记(四)
    Vue3中v-if与v-for、多事件处理器即案件修饰符、$attrs、$root和$parent
    LabVIEW压电驱动迟滞补偿控制
    OpenCv读/写视频色差 方案
    iMazing2023iOS系统设备数据传输与备份工具使用教程
    Go学习之路:更多类型:struct、slice 和映射(DAY 2)
    python后台框架简介
    仿东郊到家小程序源码 同城按摩源码 家政小程序源码 美容理疗小程序源码+公众号H5+APP源码
    MES如何做好生产过程监控,本文给出了详细解答
  • 原文地址:https://blog.csdn.net/yangcunbiao/article/details/134447454