shell 如何将操作系统的服务公开给另一个程序?

shell 如何将操作系统的服务公开给另一个程序?

我正在研究 shell,发现这是用Shell(计算) - 维基百科

在计算中,shell 是一种向人类用户或其他程序公开操作系统服务的计算机程序。

什么是“其他程序”这是什么意思?我知道它充当人与操作系统之间的接口,但我不明白“其他程序”部分。

我正在使用 Ubuntu。

答案1

shell 不是特定程序。有许多不同的 shell。一些 shell 是图形化的,另一些则基于文本。GNOME、KDE ​​和其他 shell 是图形化 shell,它们向用户公开文件系统、网络、蓝牙和应用程序。文件系统是操作系统提供的服务。

一些基于文本的 shell 是 bash、fish、zsh。它们在文本界面中公开相同的服务,如文件系统、网络、蓝牙。如果您使用 Ubuntu 上的终端应用程序打开 bash。您可以使用命令访问文件系统ls以查看所有文件。用于cd <dir_name>访问另一个文件夹/目录。

它向其他程序公开功能,因为文本 shell 允许您在文件中写入命令并执行它。因此,它们向作为脚本的程序公开操作系统功能(例如文件)。

答案2

从终端类型set你会看到:

BASH=/bin/bash
BASHOPTS=checkwinsize:cmdhist:complete_fullquote:expand_aliases:extglob:extquote:force_fignore:histappend:interactive_comments:progcomp:promptvars:sourcepath
BASH_ALIASES=()
BASH_ARGC=()
BASH_ARGV=()
BASH_CMDS=()
BASH_COMPLETION_COMPAT_DIR=/etc/bash_completion.d
BASH_LINENO=()
BASH_SOURCE=()
BASH_VERSINFO=([0]="4" [1]="3" [2]="48" [3]="1" [4]="release" [5]="x86_64-pc-linux-gnu")
BASH_VERSION='4.3.48(1)-release'
CLUTTER_IM_MODULE=xim
COLUMNS=92
COMPIZ_CONFIG_PROFILE=ubuntu
DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-z04Udzqwi8
DEFAULTS_PATH=/usr/share/gconf/ubuntu.default.path
DERBY_HOME=/usr/lib/jvm/java-8-oracle/db
DESKTOP_AUTOSTART_ID=10c167c524c0620a1160872439246457700000025900001
DESKTOP_SESSION=ubuntu
DIRSTACK=()
DISPLAY=:0

这是 shell 向其他程序提供的一些用户很少看到的信息。某些程序会根据此处提供的信息做出不同的行为。

相关内容