我认为这些术语在松散使用时几乎指的是同一件事:
这些术语中的每一个究竟指的是什么?
可能的重复:
登录 Shell 和非登录 Shell 之间的区别?
我一直在查看 /etc/profile。bash.bashrc 以查看它们是如何运行的,并注意一些是由非登录 shell 执行的,一些与交互式 shell 一起工作等。
这种类型的外壳有什么区别,即交互式和非交互式、登录和非登录等?
这个问题可能非常基本,但似乎我首先需要问什么是 shell。什么是 shell,它的相关性是什么,你如何使用它,以及它为什么存在?
更新:为了更好地理解问题的意图,除了定义之外,我还需要了解一种外壳或另一种外壳的用例。帮助理解的是用例,而不仅仅是字典定义。
我正在研究计算机的历史,以更好地理解为什么 Linux 终端以它们的方式工作。我读过在 1970 年代中期到 1980 年代中期,大多数人使用真实终端(而不是终端模拟器)与大型计算机进行通信,这是真实终端的一个示例:
但是我无法找到有关真正终端连接到的这些大型计算机的信息。任何人都可以提供这种大型计算机的名称/图片吗?
要么我在这里问的是非常非正统的/非常规的/冒险的,要么我的 Google-fu 技能不符合要求...
在bashshell 脚本中,是否有任何简单的方法可以判断它是由另一个 shell 脚本获取的,还是由它自己运行的?换句话说,是否可以区分以下两种行为?
# from another shell script
source myScript.sh
# from command prompt, or another shell script
./myScript.sh
Run Code Online (Sandbox Code Playgroud)
我正在考虑做的是创建一个类似于实用程序的 shell 脚本,其中包含bash可以在获取时可用的函数。但是,当这个脚本自己运行时,我也喜欢它根据定义的函数执行某些操作。这个shell脚本是否有某种环境变量可以选择,例如
some_function() {
# ...
}
if [ -z "$IS_SOURCED" ]; then
some_function;
fi
Run Code Online (Sandbox Code Playgroud)
最好,我正在寻找一种不需要调用者脚本设置任何标志变量的解决方案。
编辑:我知道采购和运行脚本之间的区别,我想在这里找出是否可以分辨正在使用的脚本的区别(两种方式)。
来自https://www.gnu.org/software/bash/manual/bashref.html#The-Set-Builtin
Run Code Online (Sandbox Code Playgroud)set [--abefhkmnptuvxBCEHPT] [-o option-name] [argument …] set [+abefhkmnptuvxBCEHPT] [+o option-name] [argument …]...
--如果此选项后面没有参数,则位置参数未设置。否则,位置参数将设置为参数,即使其中一些参数以“-”开头。
-表示选项结束,将所有剩余参数分配给位置参数。-x 和 -v 选项已关闭。如果没有参数,位置参数保持不变。使用“+”而不是“-”会导致这些选项被关闭。这些选项也可以在调用 shell 时使用。当前的选项集可以在 $- 中找到。
剩余的 N 个参数是位置参数,并按顺序分配给 $1, $2, ... $N。特殊参数 # 设置为 N。
好像有3种方式来设置位置参数:
set -- argument
set - argument
set argument
Run Code Online (Sandbox Code Playgroud)
它们的区别是什么?
谢谢。
shell ×3
bash ×2
terminal ×2
bashrc ×1
console ×1
history ×1
process ×1
shell-script ×1
terminology ×1
tty ×1