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/>

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

  • 相关阅读:
    js 和 jquery 动态创建元素
    京东火车票正式上线:开卖火车票!
    网易旗下新域名泰坦尼克曝光:要出航海题材新作
    Facebook CEO扎克伯格造访日本,获首相会见
    struts2教程系列
    hadoop方面的资料
    FlexViewer入门资料
    深入浅出Flex Viewer系列
    flex css
    【Flex4中的皮肤使用组件数据】系列
  • 原文地址:https://www.cnblogs.com/imcati/p/9754481.html
Copyright © 2011-2022 走看看