shell的交互式和非交互式登陸

工做中常常遇見環境變量加載問題,歸根結底就是配置文件的加載問題。shell

通常會有四種模式:交互式登錄、非交互式登錄、交互式非登錄、非交互非登錄。bash

交互式和非交互式對環境變量的加載:ssh

+----------------+--------+-----------+---------------+
|                | 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表示只會執行第一個存在的文件。spa


交互式登錄:簡單示例:code

      a.用戶直接登錄到機器得到的第一個shellblog

      b.用戶使用  ssh user@remote 得到的shell進程

非交互式登錄:ip

      bash -l  script.shrem

交互式非登錄:terminal

      在已有的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/

相關文章
相關標籤/搜索