当前位置:首页 » 操作系统 » linuxshell环境

linuxshell环境

发布时间: 2023-03-26 14:46:39

linux里,什么是shell环境

shell是用户与作业系统之间的交互层,用户修改其环境,设置或取消shell的环境变量,迎合用户的需要和爱好。shell本身就是一个电脑程序,用C语言编写,为协助用户与作业系统之间通讯而设计,管理用户与核心之间对话,
把作业系统指令换成机器代码,其实PC用户常用的DOS,本身就是一个shell。
shell的主要任务是:提示用户打入指令,读指令,转换指令为核心所能理解的语言。此外,shell可以看作为指令解释程序,提供一些工具,亦可以利用shell的编写工具,构造电脑程序。

② LINUX快速入门第八章:Shell基础

我们平时所说的 Shell 可以理解为 Linux 系统提供给用户的使用界面。Shell 为用户提供了输入命令和参数并可得到命令执行结果的环境。当一个用户登录 Linux 之后,系统初始化程序 init 就根据 /etc/passwd 文件中的设定,为每个用户运行一个被称为 Shell(外壳)的程序。

确切地说,Shell 是一个命令行解释器,它为用户提供了一个向 Linux 内核发送请求以便运行程序的界面系统级程序,用户可以用 Shell 来启动、挂起、停止甚至编写一些程序。

Shell 处在内核与外层应用程序之间,起着协调用户与系统的一致性、在用户与系统之间进行交互的作用。图 1 是 Linux 系统层次结构图,Shell 接收用户输入的命令,并把用户的命令从类似 abed 的 ASCII 码解释为类似 0101 的机器语言,然后把命令提交到系统内核处理;当内核处理完毕之后,把处理结果再通过 Shell 返回给用户。

换句话说:

Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。

Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。

Ken Thompson 的 sh 是第一种 Unix Shell,Windows Explorer 是一个典型的图形界面 Shell。

Shell 与其他 Linux 命令一样,都是实用程序,但它们之间还是有区别的。一旦用户注册到系统后,Shell 就被系统装入内存并一直运行到用户退出系统为止;而一般命令仅当被调用时,才由系统装入内存执行。

与一般命令相比,Shell 除了是一个命令行解释器,同时还是一门功能强大的编程语言,易编写,易调试,灵活性较强。作为一种命令级语言,Shell 是解释性的,组合功能很强,与操作系统有密切的关系,可以在 Shell 脚本中直接使用系统命令。大多数 Linux 系统的启动相关文件(一般在 /etc/rc.d 目录下)都是使用 Shell 脚本编写的。

同传统的编程语言一样,Shell 提供了很多特性,这些特性可以使 Shell 脚本编程更为有用,如数据变量、参数传递、判断、流程控制、数据输入和输出、子程序及中断处理等。

说了这么多,其实我们在 Linux 中操作的命令行界面就是 Linux 的 Shell,也就是 Bash,但是我们的图形界面是 Shell 吗?其实从广义讲,图形界面当然也是 Shell,因为它同样用来接收用户的操作,并传递到内核进行处理。不过,这里的 Shell 主要指的是 Bash。

Shell 脚本

Shell 脚本(shell script),是一种为 shell 编写的脚本程序。

业界所说的 shell 通常都是指 shell 脚本,但读者朋友要知道,shell 和 shell script 是两个不同的概念。

由于习惯的原因,简洁起见,本文出现的 "shell编程" 都是指 shell 脚本编程,不是指开发 shell 自身。

Shell的分类

目前 Shell 的版本有很多种,如 Bourne Shell、C Shell、Bash、ksh、tcsh 等,它们各有特点,下面简要介绍一下。

最重要的 Shell 是 Bourne Shell,这个命名是为了纪念此 Shell 的发明者 Steven Bourne。从 1979 年起,UNIX 就开始使用 Boume Shell。Bourne Shell 的主文件名为 sh,开发人员便以 sh 作为 Bourne Shell 的主要识别名称。

虽然 Linux 与 UNIX 一样,可以支持多种 Shell,但 Boume Shell 的重要地位至今仍然没有改变,许多 UNIX 系统中仍然使用 sh 作为重要的管理工具。它的工作从开机到关机,几乎无所不包。在 Linux 中,用户 Shell 主要是 Bash,但在启动脚本、编辑等很多工作中仍然使用 Bourne Shell。

C Shell 是广为流行的 Shell 变种。C Shell 主要在 BSD 版的 UNIX 系统中使用,发明者是柏克莱大学的 Bill Joy。C Shell 因为其语法和 C 语言类似而得名,这也使得 UNIX 的系统工程师在学习 C Shell 时感到相当方便。

Bourne Shell 和 C Shell 形成了 Shell 的两大主流派别,后来的变种大都吸取这两种 Shell 的特点,如 Korn、 tcsh 及 Bash。

Bash Shell 是 GNU 计划的重要工具之一,也是 GNU 系统中标准的 Shell。Bash 与 sh 兼容,所以许多早期开发出来的 Bourne Shell 程序都可以继续在 Bash 中运行。现在使用的 Linux 就使用 Bash 作为用户的基本 Shell。

Bash 于 1988 年发布,并在 1995-1996年推出Bash 2.0。在这之前,广为使用的版本是1.14,Bash 2.0增加了许多新的功能,以及具备更好的兼容性。表 2 中详细列出了各版本的具体情况。

注意,Shell 的两种主要语法类型有 Bourne 和 C,这两种语法彼此不兼容。Boume 家族主要包括 sh、ksh、Bash、psh、zsh;C 家族主要包括 csh、tcsh(Bash 和 zsh 在不同程序上支持 csh 的语法)。

本章讲述的脚本编程就是在 Bash 环境中进行的。不过,在 Linux 中除了可以支持 Bash,还可以支持很多其他的 Shell。我们可以通过 /etc/shells 文件来査询 Linux 支持的 Shell。命令如下:

在 Linux 中,这些 Shell 是可以任意切换的,命令如下:

用户信息文件 /etc/passwd 的最后一列就是这个用户的登录 Shell。命令如下:

大家可以看到,root 用户和其他可以登录系统的普通用户的登录 Shell 都是 /bin/bash,也就是 Linux 的标准 Shell,所以这些用户登录之后可以执行权限允许范围内的所有命令。不过,所有的系统用户(伪用户)因为登录 Shell 是 /sbin/ndogin,所以不能登录系统。

笔记:

sh/bash/csh/Tcsh/ksh/pdksh等shell的区别

③ Linux_Shell脚本编程之设置环境变量

1、export 变量名 = 变量值(功能描述:将shell变量输出为环境变量/全局变量)
2、source 配置文件 (功能描述:让修改后的配置信息立即生效)
3、echo $变量名 (功能描述:查询环境变量的值)

1、在/etc/profile文件中定义TOMCAT_HOME环境变量

2、查看环境变量TOMCAT的值

3、在另外一个shell程序中使用 TOMCAT_HOME

注意:文档多行注释

④ 如何运行linux shell程序

如何运行shell程序,如何在shell程序以及后续脚本中使用同一个变量,这些在工作中经常用到, 我找到如下的文章,再加深复习一下。
1 source命令用法:
source FileName
作用:在当前bash环境下读取并执行FileName中的命令。该filename文件可以无"执行权限"
注:该命令通常用命令“.”来替代。
如:source .bash_profile
. .bash_profile两者等效。
source(或点)命令通常用于重新执行刚修改的初始化文档。
source命令(从 C Shell 而来)是bash shell的内置命令。
点命令,就是个点符号,(从Bourne Shell而来)。
source的程序主体是bash,脚本中的$0变量的值是bash,而且由于作用于当前bash环境,脚本中set的变量将直接起效

2 sh, bash的命令用法:
sh/bash FileName

作用:打开一个子shell来读取并执行FileName中命令。该filename文件可以无"执行权限"

注:运行一个shell脚本时会启动另一个命令解释器.
每个shell脚本有效地运行在父shell(parent shell)的一个子进程里.
这个父shell是指在一个控制终端或在一个xterm窗口中给你命令指示符的进程.
shell脚本也可以启动他自已的子进程.
这些子shell(即子进程)使脚本并行地,有效率地地同时运行脚本内的多个子任务.
在ubuntu中sh只是bash的一个链接。
由于是在子shell中执行,脚本设置的变量不会影响当前shell。

3 ./的命令用法:
./FileName
作用:打开一个子shell来读取并执行FileName中命令。该filename文件需要"执行权限"
注:运行一个shell脚本时会启动另一个命令解释器.
每个shell脚本有效地运行在父shell(parent shell)的一个子进程里.
这个父shell是指在一个控制终端或在一个xterm窗口中给你命令指示符的进程.
shell脚本也可以启动他自已的子进程.
这些子shell(即子进程)使脚本并行地,有效率地地同时运行脚本内的多个子任务.
由于是在子shell中执行,脚本设置的变量不会影响当前shell。

4 export:
一个变量创建时,它不会自动地为在它之后创建的shell进程所知。而命令export可以向后面的shell传递变量的值。当一个shell脚本调用并执行时,它不会自动得到原为脚本(调用者)里定义的变量的访问权,除非这些变量已经被显式地设置为可用。export命令可以用于传递一个或多个变量的值到任何后继脚本
5. 举例
比如您在一个脚本里export $KKK=111 ,假如您用./a.sh执行该脚本,执行完毕后,您运行 echo $KKK ,发现没有值,假如您用source来执行 ,然后再echo ,就会发现KKK=111。因为调用./a.sh来执行shell是在一个子shell里运行的,所以执行后,结构并没有反应到父shell里,但是 source不同他就是在本shell中执行的,所以能够看到结果.
小测试
1 建立test.sh
#!/bin/bash
export s=/home/jboss/
2 执行命令: source test.sh
echo $s
结果输出: /home/jboss/
3 新开个shell
执行命令: ./test.sh
echo $s
结果: 没有输出s值

结论:
1、执行脚本时是在一个子shell环境运行的,脚本执行完后该子shell自动退出。
2、一个shell中的系统环境变量才会被复制到子shell中(用export定义的变量);
3、一个shell中的系统环境变量只对该shell或者它的子shell有效,该shell结束时变量消失(并不能返回到父shell中)。3、不用 export定义的变量只对该shell有效,对子shell也是无效的。

直接执行一个脚本文件是在一个子shell中运行的,而source则是在当前shell环境中运行的。
source可以让脚本影响它们的父shell环境,这和export去影响子shell环境相反.

⑤ 如何设置linux shell环境变量

不是这个概念的。
1,如果你只是想设置一个变量,没有必要在profile里面设置。
a=123
echo
"$a"就可以了
2,如果你是想设置环境变量(路径),在profile或者.bashrc中
a=/dir
PATH=$PATH:$a
export
PATH
这就加入一个/dir目录。

⑥ linux中的shell究竟是什么

linux中的shell究竟是;

ll程序呢? 简单的说shell程序就是一个包含若干行

shell或者linux命令的文件.

象编写高级语言的程序一样,编写一个shell程序需要一个文本编辑器.如VI等.

在文本编辑环境下,依据shell的语法规则,输入一些shell/linux命令行,形成一个完整

的程序文件.

⑦ 来学一学LINUX系统中SHELL环境的搭建技巧

什么是 LINUX SHELL环境?shell在会话中会保存着大量信息,而这些信息就是shell环境。LINNX命令程序通过获取SHELL环境中的数据(此处的数据通常称为环境变量)来输出本机相应的配置数据。


LINUX环境变量

Linux shell环境中存储了两种基本类型的数据:环境变量和shell变量。当然,除了变量,shell也存储了一些可编程的数据,即别名和shell 函数。

如何查看环境变量呢?

我们可以用bash命令set,或者使用printenv命令程序来查看环境变量。

它们的区别是:set 命令不仅显示shell数据,而且可以显示环境变量列表,而printenv命令仅仅显示环境变量列表。

鉴于环境变量列表比较长,我们可以将每个命令的输出通过管道符传递给less 来输出列表,例如:

//执行命令

[test@linuxprobe ~]$ printenv | less

//输出内容:环境变量及其数值的列表

KDE_MULTIHEAD=false

SSH_AGENT_PID=6666

HOSTNAME= linuxprobe

GPG_AGENT_INFO=/tmp/gpg-PdOt7g/S.gpg-agent:6689:1

SHELL=/bin/bash

TERM=xterm

XDG_MENU_PREFIX=kde-

HISTSIZE=1000

XDG_SESSION_COOKIE=-1208521990.996705

-1177056199

GTK2_RC_FILES=/etc/gtk-2.0/gtkrc:/home/me/.gtkrc-2.0:/home/me/.kde/sh

are/config/gtkrc-2.0

GTK_RC_FILES=/etc/gtk/gtkrc:/home/me/.gtkrc:/home/me/.kde/share/confi

g/gtkrc

GS_LIB=/home/me/.fonts

WINDOWID=29360136

QTDIR=/usr/lib/qt-3.3

QTINC=/usr/lib/qt-3.3/include

KDE_FULL_SESSION=true

USER=test

LS_COLORS=no=00:fi=00:di=00;34:ln=00;36:pi=40;33:so=00;35:bd=40;33;01

:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=00;32:*.cmd=00;32:*.exe:


//printenv 命令也可输出特定变量- USER的数值:

[test@linuxprobe ~]$ printenv USER

test




建立LINUX shell 环境


每当我们登录系统后,bash 程序就会自动启动,且会读取一系列配置脚本,这些配置脚本被称为启动文件。这些启动文件定义了可供所有用户共享的默认shell 环境。

那么位于家目录中的启动文件,定义了用户个人的shell 环境。

确切的启动顺序取决于shell 会话类型模式。有两种shell 会话类型模式:一个是登录shell 会话模式,另一个是非登录shell 会话模式。

登录shell 会话模式中会提示用户输入用户名和密码;非登录shell 会话模式通常在GUI下启动终端会话时出现。

登录shell 会话模式下启动文件内容:


非登录shell 会话模式下启动文件内容:


修改linux shell环境

依据通常的操作思路,通过添加目录到PATH 变量或定义新的环境变量,再把这些更改存放至.bash_profile 文件中;那么对于其它的更改呢,需要存放至.bashrc 文件中。

除了系统管理员具将系统中的所有用户修改默认设置的权限外,其他用户只能限定对个人家目录下的文件进行修改。

我们通过使用一个叫做文本编辑器的程序来编辑(或读、写)shell 的启动文件以及其它配置文件。文本编辑器是一个类似于文字处理器的程序,允许使用移动光标在屏幕上编辑。但不同之处在于文本编辑器不仅支持纯文本,而且常包含为便于写程序而设计的特性。由此可见,文本编辑器是开发人员用来写代码,以及系统管理员用来管理控制系统的配置文件的重要工具之一。

文本编辑器通常分为两种基本类型:图形化的和非图形化的(基于文本)编辑器。

一些典型的图形化编辑器有GNOME 和KDE。GNOME编辑器自带了gedit 的编辑器,它通常在GNOME 菜单中称为“文本编辑器”。KDE自带了三种编辑器,分别是kedit,kwrite,kate。

那么基于文本的编辑器有nano、vi 和emacs。

nano 编辑器是一个简单易用的编辑器。vi 编辑器(目前已被vim (“Vi IMproved” 的简写)替代)是类Unix 操作系统的传统编辑器。emacs 编辑器属于庞大的、多用途的,可做任何操作的编程环境。

无论哪种类型的文本编辑器都可以在命令行中输入编辑器的名字及想要编辑的文件名,执行文本编辑操作。在这篇文章中,我们学到了用文本编辑器来编辑配置文件的基本技巧。

这篇文章主要讨论了linux SHELL环境的一些基础知识及基本的操作技巧。在编写这篇文章过程中我还参考了 《Linux就该这么学(第2版)》 这本书,基于红帽8编写,内容很贴近实践,很有理论指导实践价值的一本书籍。

⑧ linux命令和shell命令有什么区别啊

shell翻译成壳的意思,它是包裹在Linux内核外层的,一个可通过一系列的Linux命令对操作系统发出相关指令的人机界面。shell可以通过其条件语句和循环语句等,把一系列Linux命令结合在一起,形成一个相当于面向过程的程序,即shell
script,从而实现一些复杂的功能。
shell可以说是Linux命令集的概称,属于命令行的人机界面。shell是一个用C语言编写的程序,它是用户使用Linux的桥梁。shell既是一个命令语言,也是一个程序设计语言;其次,shell也指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。
由此可见,shell相当于经过装饰的命令行,它与命令行一样,都能操作Linux;但是shell是面向过程的,相当于有了一定的逻辑和过程,而命令行只是单一的操作。
linux命令是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命令类似。linux命令在系统中有两种类型:内置Shell命令和Linux命令。
shell与linux命令的区别
1、直接在命令行执行,就是在当前的shell环境下执行,比如涉及到一些环境变量的时候,必须在当前shell环境里执行。
2、在脚本执行的话,会fork一个子进程,所有操作都在子进程中进行。如果涉及到一些在脚本里设置环境变量的东西,脚本结束了,环境变量就消失了,如果是修改环境变量的话,需要特别注意。
3、shell可以重复或批量地进行一些命令,你也可以把自己要重复执行的命令写到脚本里面执行,而命令行的话就需要一个一个的输入命令,比较麻烦。

⑨ linux shell脚本执行命令详解

在Linux下,如果你需要执行shell脚本,那么应该使用那个命令呢?下面由我为大家整理了linux shell脚本执行命令的相关知识,希望对大家有帮助!

linux shell脚本执行

linux shell脚本执行方法一: 切换到shell脚本所在的目录(此时,称为工作目录)执行shell脚本:

cd /data/shell

./hello.sh

./的意思是说在当前的工作目录下执行hello.sh。如果不加上./,bash可能会响应找到不到hello.sh的错误信息。因为目前的工作目录(/data/shell)可能不在执行程序默认的搜索路径之列,也就是说,不在环境变量PASH的内容之中。查看PATH的内容可用 echo $PASH 命令。现在的/data/shell就不在环境变量PASH中的,所以必须加上./才可执行。

linux shell脚本执行方法二: 以绝对路径的方式去执行bash shell脚本:

/data/shell/hello.sh

linux shell脚本执行方法三: 直接使用bash 或sh 来执行bash shell脚本:

cd /data/shell

bash hello.sh

cd /data/shell

sh hello.sh

注意,若是以方法三的方式来执行,那么,可以不必事先设定shell的执行权限,甚至都不用写shell文件中的第一行(指定bash路径)。因为方法三是将hello.sh作为参数传给sh(bash)命令来执行的。这时不是hello.sh自己来执行,而是被人家调用执行,所以不要执行权限。那么不用指定bash路径自然也好理解了啊。

linux shell脚本执行方法四: 在当前的shell环境中执行bash shell脚本:

cd /data/shell

. hello.sh

cd /data/shell

source hello.sh

前三种方法执行shell脚本时都是在当前shell(称为父shell)开启一个子shell环境,此shell脚本就在这个子shell环境中执行。shell脚本执行完后子shell环境随即关闭,然后又回到父shell中。而方法四则是在当前shell中执行的。

热点内容
虚拟主机和轻云服务器 发布:2024-04-28 05:34:20 浏览:774
电脑服务器的品牌型号怎么查 发布:2024-04-28 04:33:06 浏览:138
文件上传ui 发布:2024-04-28 04:07:14 浏览:483
我的世界pe登服务器 发布:2024-04-28 04:05:58 浏览:672
如何监控数据库 发布:2024-04-28 03:44:07 浏览:28
测温一体机怎么配置 发布:2024-04-28 03:11:56 浏览:591
大生活迅雷下载ftp 发布:2024-04-28 03:11:09 浏览:511
python如何生成随机数 发布:2024-04-28 02:21:59 浏览:169
小雨游戏解说我的世界服务器 发布:2024-04-28 02:08:12 浏览:877
安卓怎么删除账户 发布:2024-04-28 02:06:50 浏览:829