我发现有像贝壳nologin
,false
和true
。还有什么?
我不知道用于列出 shell 的正确关键字是什么。每当我使用搜索的关键字linux shell types
,我得到的结果说明差异的背景下bash
,csh
,zsh
,和其他人。
用于查找有关此主题的更多信息的正确关键字是什么?
nologin、false 和 true 不是 shell,它们只是防止登录的方法。这使得那些以sh
. 因此,在/bin
、/usr/bin
等中搜索将有助于找到大多数已安装的。
那么就有了“什么是shell”的问题。python、purl、tcl等是shell吗?可能不是,但是分割线在哪里?作为true
, false
, 和nologin
do not interpreters(不接受用户输入,不是语言等),那么它们肯定在行的非外壳侧。
然而,登录外壳不必是外壳,它甚至不必是交互式的。
您可以使用您最喜欢的搜索引擎在 Internet 上搜索 Unix shell。
我发现有像 nologin、false 和 true 这样的 shell。还有什么?
正如@ctrl-alt-delor 已经指出的那样,这些不是 shell 。
我不知道要输入什么来列出贝壳。
您无法获得所有存在的 shell 的详尽列表。这就像要求列出所有存在的软件。
每当我搜索 linux shell 类型(以及类似类型)时,我都会在说明 bash、csh、zsh 和您知道的其他类型之间的差异的上下文中得到结果。
这真的很方便,因为这些是您可能会遇到的流行 shell。
用于了解有关该主题的更多信息的关键字是什么?
“shell”有时也称为“ REPL ”、“命令行解释器”或“命令语言解释器”。
小智 5
这是一个答案很复杂的问题。大多数人所说的“shell”是Read-Eval-Print 循环,因此,即使 Python 解释器也是一个 shell,前提是您以交互方式运行 python。然而,这意味着 nologin 不是一个真正的 shell!那么什么是壳呢?
从技术上讲,任何程序都可以用作外壳。事实上,这里有几张我使用不寻常贝壳的照片:
但是,这不是您期望作为 shell 运行的内容。通常,您会希望在/etc/shells
. 例如,我的包含:
# /etc/shells: valid login shells
/bin/sh
/bin/bash
/bin/rbash
/bin/dash
/usr/bin/tmux
/usr/bin/screen
Run Code Online (Sandbox Code Playgroud)
而我之前提到的贝壳都没有!那么他们为什么要跑呢?
简而言之,他们这样做,但仅限于本地。如果您查看shells
带有的联机帮助页man shells
,您会发现它/etc/shells
主要由 FTP 守护程序等程序使用。这就是为什么您看不到nologin
shell 的原因/etc/shells
:它通过不在那里阻止登录到 FTP 和其他非登录守护程序,同时通过一个简单的printf("This account is currently not available");
程序而不是 REPL阻止本地登录。
所以,回答你的问题:只有一种类型的外壳,而且是可执行的。如果你能运行一个程序,它就是一个shell。