CentOS7-交互式登录shell和非交互式登录shell-环境配置文件

1、交互式和非交互式shell:

交互式模式就是在终端上执行,shell等待你的输入,并且立即执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、退出。当你退出后,shell也终止了。
非交互式模式,以shell script(非交互)方式执行。在这种模式 下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾EOF,shell也就终止了。
可以通过打印“$-”变量的值(代表着当前shell的选项标志),查看其中的“i”选项(表示interactive shell)来区分交互式与非交互式shell。
区别:是否与用户进行交互(如:在终端执行命令,shell等待你的输入,并且立即执行你提交的命令。)

2、登录式和非登录式shell:

登录shell:是需要用户名、密码登录后才能进入的shell(或者通过”–login”选项生成的shell)。
非登录shell:当然就不需要输入用户名和密码即可打开的Shell,例如:直接命令“bash”就是打开一个新的非登录shell。

3、登录与交互

是否登录与是否交互是两个维度的概念。两两组合的四种情况均会出现:

3.1、交互式登录

常见的登录系统后进行操作的shell。

3.2、非交互式登录

强制使用登陆方式执行的shell脚本。

3.3、交互式非登录

常见的shell脚本运行的方式。

3.4、非交互式非登录

在shell中使用bash调出shell,在系统中打开命令行工具。

4、shell配置文件

用户登录到 Linux系统后,系统将启动一个用户 shell。在这个 shell中,可以使用 shell命令或声明变量,也可以创建并运行 shell脚本程序。运行 shell脚本程序时,系统将创建一个子 shell。此时,系统中将有两个 shell,一个是登录时系统启动的 shell,另一 个是系统为运行脚本程序创建的 shell。当一个脚本程序运行完毕,它的脚本 shell将终止,可以返回到执行该脚本之前的 shell。从这种意义上来说,用户可以有许多 shell,每个shell都是由某个 shell(称为父shell)派生的。
在子 shell中定义的变量只在该子 shell内有效。如果在一个 shell脚本程序中定义了一个变量,当该脚本程序运行时,这个定义的变量只是该脚本程序内 的一个局部变量,其他的shell不能引用它,要使某个变量的值可以在其他 shell中被改变,可以使用export命令对已定义的变量进行输出。 export命令将使系统在创建每一个新的shell时定义这个变量的一个拷贝。这个过程称之为变量输出。
同时,在我们使用 shell的同时,我们应该清楚shell的一些配置文件的存放位置,按照范围来分,可以分为两种:

1. 全局配置:

/etc/profile
此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行。并从 /etc/profile.d 目录的配置文件中收集 shell 的设置。如果你有对 /etc/profile 有修改的话必须得 source 一下你的修改才会生效,此修改对每个用户都生效。

/etc/profile.d/*.sh

/etc/bashrc
为每一个运行 bash shell 的用户执行此文件。当 bash shell 被打开时,该文件被读取。如果你想对所有的使用 bash 的用户修改某个配置并在以后打开的 bash 都生效的话可以修改这个文件,修改这个文件不用重启,重新打开一个 bash 即可生效。

2. 用户配置:

~/.bash_profile
每个用户都可使用该文件输入专用于自己使用的 shell 信息,当用户登录时,该文件仅仅执行一次!默认情况下,它设置一些环境变量,执行用户的~/ .bashrc 文件。 此文件类似于 /etc/profile,也是需要需要 source 才会生效,/etc/profile 对所有用户生效,~/.bash_profile 只对当前用户生效。~/.profile(由Bourne Shell和Korn Shell使用)和.login(由C Shell使用)两个文件是.bash_profile的同义词,目的是为了兼容其它Shell。

~/.bashrc
该文件包含专用于你的 bash shell 的 bash 信息,当登录时以及每次打开新的 shell 时,该文件被读取。(每个用户都有一个 ~/.bashrc 文件,在用户目录下) 此文件类似于 /etc/bashrc,不需要重启就可以生效,重新打开一个 bash 即可生效,/etc/bashrc 对所有用户新打开的 bash 都生效,但 ~/.bashrc 只对当前用户新打开的 bash 生效。
~/.bashrc文件会在bash shell调用另一个bash shell时读取,也就是在shell中再键入bash命令启动一个新shell时就会去读该文件。这样可有效分离登录和子shell所需的环境。但一般 来说都会在/.bash_profile里调用/.bashrc脚本以便统一配置用户环境。

5、交互式登录shell和非交互式登录shell的区别

交互式登录:(清除掉所有变量,通过文件重新读入)
1.直接通过终端输入账号密码登录
2.使用“su - username”切换的用户
执行顺序:(影响该shell的配置文件)
/etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile–> ~/.bashrc–> /etc/bashrc

非交互式登录:(会继承上一个shell的全部变量)
1.su UserName
2.图形界面下打开的终端
3.执行脚本 (当我们执行脚本的时候.我们就已经进入到了一个子shell)
4.任何其它的bash实例
执行顺序:(影响该shell的配置文件)
~/.bashrc–> /etc/bashrc–> /etc/profile.d/*.sh

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这是一个 Docker 命令,作用是在本地主机上启动一个名为 centos7 的容器,并将其绑定到一个名为 my-vol 的本地卷。 具体参数解析如下: - `docker run`: 启动一个新的容器。 - `-it`: 表示以交互式模式运行容器。 - `--name=centos7`: 指定容器的名称为 centos7。 - `-v my-vol:/opt`: 将本地卷 my-vol 挂载到容器中的 /opt 目录下。 - `centos:7`: 指定要运行的镜像为 CentOS 7。 - `bash`: 在容器中运行 Bash 命令行 shell。 ### 回答2: docker run -it --name=centos7 -v my-vol:/opt centos:7 bash表示使用Docker运行一个基于CentOS 7基础镜像的容器,并且通过bind mount的方式将主机上的my-vol目录挂载到容器内的/opt目录上。 - `-it`参数是告诉Docker以交互式模式运行容器,并且分配一个伪终端。 - `--name=centos7`参数是给容器命名为centos7,方便后续对容器的管理和操作。 - `-v my-vol:/opt`参数是在容器启动时将主机上的my-vol目录挂载到容器内的/opt目录,这样容器内的/opt目录就可以直接访问主机上的my-vol目录的内容。 - `centos:7`表示使用CentOS 7作为基础镜像。 - `bash`表示容器启动后默认进入bash shell终端,可以在容器内执行命令。 综上所述,该命令的作用是在Docker中创建一个以CentOS 7为基础镜像的容器,该容器以交互式模式运行,并且将主机上的my-vol目录挂载到容器内的/opt目录,同时进入容器的bash shell终端。这样可以在容器内执行一些需要在CentOS 7环境下运行的命令或程序,并且可以直接访问主机上的my-vol目录的内容。 ### 回答3: `docker run -it --name=centos7 -v my-vol:/opt centos:7 bash`是一个Docker命令,用于在Docker容器中运行一个CentOS 7镜像并创建一个名为"centos7"的容器。 解析该命令的各个部分如下: - `docker run`:运行一个新的容器。 - `-it`:以交互模式启动容器,在终端中可以执行命令并与容器进行交互。 - `--name=centos7`:指定容器的名称为"centos7",方便后续对容器的操作。 - `-v my-vol:/opt`:将本地主机的目录"my-vol"挂载到容器内部的"/opt"目录,实现主机目录和容器目录的数据共享。 - `centos:7`:指定使用的镜像为CentOS 7。 - `bash`:在容器中执行的启动命令,即在容器内启动一个Bash终端。 总结来说,该命令的作用是创建一个名为"centos7"的容器,使用CentOS 7镜像,并在容器内部启动一个Bash终端。同时,将本地主机的"my-vol"目录挂载到容器的"/opt"目录,以实现数据共享。这样可以通过交互式终端来执行命令,并且在容器内进行文件操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值