ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

登陆shell,非登陆shell 以及交互shell和非交互shell

2020-10-15 12:00:58  阅读:205  来源: 互联网

标签:shell 读取 登陆 交互式 login 交互 bash


    linux下shell运行模式分为登陆shell,非登陆shell 以及交互shell和非交互shell,这几种分类方法是有交叉的,也就是说一个login shell可能是一个interactive shell,也可能是个non-interactive shell。

     

    1.我们平时运行的shell脚本,一般是不和用户交互的,这就是一种非交互,非登陆shell.

    2.在系统已经登陆后,你打开一个终端,或者执行bash 命令新建一个终端窗口,这就是一种交互式的非登陆shell.

    3.login shell是通过登陆得来的,主要有以下几种方式:

  1. 登录系统时获得的顶层shell,无论是通过本地终端登录,还是通过网络ssh登录。这种情况下获得的login shell是一个交互式shell。

  2. 在终端下使用--login选项调用bash 命令,可以获得一个交互式login shell。

  3. 在脚本中使用--login选项调用bash(比如在shell脚本第一行做如下指定:#!/bin/bash --login),此时得到一个非交互式的login shell。

  4. 使用"su -"切换到指定用户时,获得此用户的login shell。如果不使用"-",则获得non-login shell。


login shell与non-login shell的主要区别在于它们启动时会读取不同的配置文件,从而导致环境不一样。login shell(包括交互式登录shell和使用“--login”选项的非交互shell)启动时首先读取/etc/profile全局配置,然后依次查找~/.bash_profile、~/.bash_login、~/.profile三个配置文件,并且读取第一个找到的并且可读的文件。login shell退出时读取并执行~/.bash_logout中的命令。


在非登录shell里,只读取 ~/.bashrc (一般会在其中再去读取/etc/bash.bashrc、/etc/bashrc )文件,不同的发行版里面可能有所不同。


非交互式shell,对于zsh,可以将配置逻辑写入~/.zshenv;对于bash,可以写入一个文件并将此文件名设置为BASH_ENV的值。


参考https://mp.weixin.qq.com/s/zCzm2ZKKDddDKH8zBiTl-g。


标签:shell,读取,登陆,交互式,login,交互,bash
来源: https://blog.51cto.com/jack88/2541858

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有