登录 Shell 和非登录 Shell 之间的区别
本文解释了基于 UNIX 的系统中登录 shell 和非登录 shell 之间的区别。
什么是基于 UNIX 的系统中的 Shell
基于 UNIX 的系统中的 shell 是用户和操作系统内核之间的接口。它从用户那里获取输入并将其发送到内核,并将结果从内核获取到用户。
有两种类型的 shell,登录 shell 和非登录 shell。
每个 shell 在启动后都会执行一系列启动脚本来设置环境。这些脚本有不同的用途,它们都会影响环境。
后续脚本可以覆盖先前脚本设置的值。
什么是基于 UNIX 的系统中的登录 Shell
登录 shell 是使用 /bin/login
通过读取 /etc/passwd
文件成功登录后启动的第一个进程。登录 shell 在你的用户 ID 下执行。
当你使用终端登录、切换到另一个用户或使用 SSH 时,会执行登录 shell。
一旦登录 shell 启动,它就会执行一组启动脚本来设置 shell 环境。执行以下脚本。
以下命令用于指示 shell 是否为登录 shell。
echo $0
得到 -bash
或 -su
作为输出表明 shell 是一个登录 shell。记下输出前的 -
符号。
在下图中,echo $0
命令的输出在 bash
前面有一个 -
。它表明 shell 是一个登录 shell。
什么是基于 UNIX 的系统中的非登录 Shell
登录 shell 启动一个非登录 shell。它可以是一个以没有登录的进程启动的 shell,也可以是从另一个 shell 启动的 shell。进程使用 shell 可执行文件的名称来启动非登录 shell。
将 bash shell 作为非登录 shell 运行会执行以下脚本。
要确定 shell 是否为非登录 shell,请运行以下命令。
echo $0
如果输出是 bash
或 su
而没有前面的 -
符号,则 shell 是非登录 shell。
我们执行下图中的 echo $0
命令,输出显示 bash
前面的 -
。这意味着我们正在使用登录 shell。
要启动一个非登录 shell,我们输入 shell 可执行文件的名称,在我们的例子中是 bash
。我们再次执行 echo $0
命令来查看新启动的 shell 是什么类型的 shell; echo
命令的输出是 bash
没有 -
。这意味着新 shell 是非登录 shell。
相关文章
如何在 CentOS 中获取 IP 地址
发布时间:2023/05/04 浏览次数:108 分类:操作系统
-
这篇简短的文章是对 CentOS 的一个简短介绍,然后简要讨论了我们如何使用命令行界面 (CLI) 在 CentOS 中获取服务器 IP 地址。
在 Linux 中更新 YUM
发布时间:2023/05/04 浏览次数:82 分类:操作系统
-
本文介绍了 Linux 中的 yum update 命令。本文将教我们如何在 Linux 中更新 YUM,以及如何在 Linux 系统上安装、更新、删除、查找和管理包。
在 Linux 中安装 Deb 文件
发布时间:2023/05/04 浏览次数:130 分类:操作系统
-
本文介绍如何在 Linux 中安装 deb 文件。在这篇 Linux 文章中,我们将学习如何在 Linux 系统上安装 .deb(Debian 软件包)文件。 我们还将看到如何在安装后删除 .deb 文件。
Linux 中的 lsof 命令
发布时间:2023/05/04 浏览次数:82 分类:操作系统
-
在这篇 Linux 文章中,我们将了解 Linux 操作系统中的 lsof 命令。 我们将看到如何在 Linux 中将此命令用于不同目的。
Linux 解决不能执行二进制文件问题
发布时间:2023/05/04 浏览次数:187 分类:操作系统
-
在本文中,我们将学习如何在 Linux 中执行二进制文件。 如果 Linux 无法执行二进制文件,我们还将学习如何解决错误。
Linux 中错误 Mesg: Ttyname Failed: Inappropriate Ioctl for Device Error
发布时间:2023/05/04 浏览次数:145 分类:操作系统
-
本文介绍如何在 Linux 中解决 mesg: ttyname failed: inappropriate ioctl for device 错误。在 Linux 中,这个错误是由于默认的 vagrant 配置 config.ssh.shell 与 bash -l 交互导致的。
Linux 中的 ps aux 命令
发布时间:2023/05/04 浏览次数:69 分类:操作系统
-
本篇文章将讨论 Linux 中的 ps aux 命令。如果将 aux 快捷方式与 ps 命令一起使用,它将显示用户需要的最多信息,并可以为您提供系统运行进程的当前状态。
Linux 中的 NTP
发布时间:2023/05/04 浏览次数:137 分类:操作系统
-
本篇文章将讨论 Linux 中的 ntp。NTP 是大多数 IT 基础设施使用的核心协议。 使用它的目的是同步日期和时间信息。
在 Bash 中创建进度条
发布时间:2023/05/04 浏览次数:164 分类:操作系统
-
这是有关在 Bash 中创建进度条以显示正在运行的命令或进程的进度的指南。本文将探讨在 Bash(Linux 和 macOS 的默认 shell)中向 shell 脚本添加进度条的几种方法。使用 pv 命令在 Bash 中创建进度条