zoukankan      html  css  js  c++  java
  • shell的交互式和非交互式登录

    工作中经常碰见环境变量加载问题,归根结底就是配置文件的加载问题。

    一般会有四种模式:交互式登陆、非交互式登陆、交互式非登陆、非交互非登陆。

    交互式和非交互式对环境变量的加载:

    +----------------+--------+-----------+---------------+
    |                | login  |interactive|non-interactive|
    |                |        |non-login  |non-login      |
    +----------------+--------+-----------+---------------+
    |/etc/profile    |   A    |           |               |
    +----------------+--------+-----------+---------------+
    |/etc/bash.bashrc|        |    A      |               |
    +----------------+--------+-----------+---------------+
    |~/.bashrc       |        |    B      |               |
    +----------------+--------+-----------+---------------+
    |~/.bash_profile |   B1   |           |               |
    +----------------+--------+-----------+---------------+
    |~/.bash_login   |   B2   |           |               |
    +----------------+--------+-----------+---------------+
    |~/.profile      |   B3   |           |               |
    +----------------+--------+-----------+---------------+
    |BASH_ENV        |        |           |       A       |
    +----------------+--------+-----------+---------------+

    bash的每种模式会读取其所在列的内容,首先执行A,然后是B,C。而B1,B2和B3表示只会执行第一个存在的文件。


    交互式登陆:简单示例:

          a.用户直接登陆到机器获得的第一个shell

          b.用户使用  ssh user@remote 获得的shell

    非交互式登陆:

          bash -l  script.sh

    交互式非登陆:

          在已有的shell中运行bash,此时不需要登陆

    非交互式非登陆:

          a. bash script.sh

          b. ssh user@remote command

    为了更好的理清这几种模式,下面我们对一些典型的启动方式各属于什么模式进行一个总结:

    • 登陆机器后的第一个shell:login + interactive
    • 新启动一个shell进程,如运行bash:non-login + interactive
    • 执行脚本,如bash script.sh:non-login + non-interactive
    • 运行头部有如#!/usr/bin/env bash的可执行文件,如./executable:non-login + non-interactive
    • 通过ssh登陆到远程主机:login + interactive
    • 远程执行脚本,如ssh user@remote script.sh:non-login + non-interactive
    • 远程执行脚本,同时请求控制台,如ssh user@remote -t 'echo $PWD':non-login + interactive
    • 在图形化界面中打开terminal:  Linux: non-login + interactive  、Mac OS X上: login + interactive

    参考链接:http://feihu.me/blog/2014/env-problem-when-ssh-executing-command-on-remote/

    赠人玫瑰,手有余香,如果我的文章有幸能够帮到你,麻烦帮忙点下右下角的推荐,谢谢!

    作者: imcati

    出处: https://www.cnblogs.com/imcati/>

    本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 原文链接

  • 相关阅读:
    主流的浏览器分别是什么内核?
    css的基本语句构成是什么?
    如何居中一个浮动元素?
    你如何管理CSS文件、JS与图片?
    、在ie6,ie7中元素高度超出自己设置高度。原因是IE8以前的浏览器中会给元素设置默认的行高的高度导致的。
    前端页面有哪三层构成,分别是什么?作用是什么?
    两个对象的 hashCode() 相同,则 equals() 也一定为 true,对吗?
    == 和 equals 的区别是什么?
    JDK 和 JRE 有什么区别?
    2020.10.19
  • 原文地址:https://www.cnblogs.com/imcati/p/9754481.html
Copyright © 2011-2022 走看看