首页 » 信息技术 »

login shell和non-login shell

2017年6月5日 / 43次阅读
Bash

  • 打开支付宝,搜索“ 529018372 ”,领取专属红包!每日支付每日领。

以下是来自Bash man page的对于login shell的解释,说清楚了login bash在启动和退出的时候,要读取并执行的脚本。

When bash is invoked as an interactive login shell, or as a non-
interactive shell with the --login option, it first reads and
executes commands from the file /etc/profile, if that file exists.
After reading that file, it looks for ~/.bash_profile, ~/.bash_login,
and ~/.profile, in that order, and reads and executes commands from
the first one that exists and is readable. The --noprofile option
may be used when the shell is started to inhibit this behavior.

当interactive login shell启动的时候,或者以non-interactive shell with --login option的方式启动,Bash先读取/etc/profile文件,如果此文件存在的话。然后按照如下顺序读取~/.bash_profile,~/.bash_login,~/.profile文件并执行其中的脚本。如果使用--noprofile参数启动shell,就不会有这些读取初始脚本文件的行为。

When an interactive login shell exits, or a non-interactive login
shell executes the exit builtin command, bash reads and executes
commands from the file ~/.bash_logout, if it exists.

当interactive login shell退出,或者non-interactive login shell 执行exit命令,bash读取并执行~/.bash_logout脚本,如果此文件存在话。

这段文件说清楚了non login shell启动是要读取的脚本文件:

When an interactive shell that is not a login shell is started, bash
reads and executes commands from ~/.bashrc, if that file exists.
This may be inhibited by using the --norc option. The --rcfile file
option will force bash to read and execute commands from file instead
of ~/.bashrc.

interactive shell 但是是 non login,bash读取并执行~/.bashrc,如果此文件存在的话。

可以通过--norc选项来阻止这个启动动作。--rcfile选项可以任意指定一个脚本文件。

su命令带上-,就可以在切换用户的时候,模拟login shell。

 

-----以下文字不太准确,仅供参考,以上面部分为准------

login shell和non-login shell的区别:

Login shell就是你进入shell是需要输用户名密码的,而nologin shell就是你不需要输入密码就能进入的shell。比如你进入图形界面之后,右键打开终端,就直接打开了一个承载shell的终端,在这个终端中你不用输入用户名密码就直接可以使用命令。

 

login shell:

取得 bash(很普遍的一种shell程序) 时需要完整的登陆流程的,就称为 login shell,例如:

(1)你由 tty1 ~ tty6 登陆,需要输入用户的账号与密码,此时取得的 bash 就称为『 login shell 』;

login shell读取下面的启动文件:

/etc/profile 对所有用户开放的全局配置文件
~/.bash_profile 某个用户个人的启动文件,能用作个人的全局设置
~/.bash_login 如果 ~/.bash_profile找不到,则bash尝试读取这个脚本
~/.profile 如果这两个文件~/.bash_profile, ~/.bash_login 都找不到,bash就读取这个文件,这是个默认文件

 

non-login shell:

取得 bash 接口的方法不需要重复登陆的举动:

(1)你以 X window 登陆 Linux 后, 再以 X 的图形化接口启动终端机,此时那个终端接口并没有需要再次的输入账号与密码,那个 bash 的环境就称为 non-login shell了;

(2)你在原本的 bash 环境下再次下达 bash 这个命令,同样的也没有输入账号密码, 那第二个 bash 也是 non-login shell;

non-login shell读取下面的启动配置文件:

/etc/bash.bashrc 对所有用户开放的全局配置文件
~/.bashrc 某个用户个人的启动文件,能用作个人的全局设置

 

不同的发行版本,shellbash初始化读取的文件不太相同。Ubuntu系统的~/.profile文件直接读取~/.bashrc,这样不管是怎么样启动shell,配置文件一样。

 

su 和su -的区别

对于su命令,只会更改当前用户,而不会更改当前的用户环境,比如你从oracle 用户su到root账户中,当前路径仍是你刚才的路径,环境变量仍是oracle用户的变量信息。

而su -命令,则在更改当前用户信息的同事还会更改用户环境,如果你从oracle 用户su -到root账户,你会发现你的当前路径已经变味/root/下了,环境变量也变了。这就是区别。

本文链接:http://www.maixj.net/ict/login-shell-non-15695

相关文章

留言区

电子邮件地址不会被公开。 必填项已用*标注


前一篇:
后一篇:
推一篇:可靠正规,长期稳定,网络兼职项目!!

栏目精选

云上小悟,麦新杰的独立博客

Ctrl+D 收藏本页

栏目


©Copyright 麦新杰 Since 2014 云上小悟独立博客版权所有 备案号:苏ICP备14045477号-1。云上小悟网站部分内容来源于网络,转载目的是为了整合信息,收藏学习,服务大家,有些转载内容也难以判断是否有侵权问题,如果侵犯了您的权益,请及时联系站长,我会立即删除。

网站二维码
go to top