精华内容
下载资源
问答
  • 你打开mac终端时,就是交互式登录shell,所以要使你的系统配置所有用户都生效,就要都以交互式登录方式。 2、退出shell #查看当前活跃的shell ps -ef | grep bash #退出当前shell(login 命令登录时,可以用...

    1、当用户登录时或su - 用户名,该文件被读取

    su - root,产生一个交互式登录shell。

    su root,产生一个非登录交互shell。非登录交互shell,只执行 用户家目录下 .profile等配置文件。

    你打开mac终端时,就是交互式登录shell,所以要使你的系统配置所有用户都生效,就要都以交互式登录方式。

     

    对于Bash来说

    登录shell:会首先读取和执行/etc/profile全局配置文件中的命令,然后依次查找~/.bash_profile、~/.bash_login 和 ~/.profile这三个配置文件,读取和执行这三个中的第一个存在且可读的文件中命令。除非被“–noprofile”选项禁止了。

    非登录shell:只读取 ~/.bashrc (和 /etc/bash.bashrc、/etc/bashrc )文件,不同的发行版里面可能有所不同。

     

    2、退出shell

    #查看当前活跃的shell

    ps -ef | grep bash

    #退出当前shell(login 命令登录时,可以用logout退出)

    exit

    #可以查看当前shell ID , 退出shell后,可以执行这个指令来验证是否退出成功

    echo $$

    找到对应系统配置和用户级别配置

     

    交互式与非交互式shell:

    区分:是否与用户进行交互(在终端上执行,shell等待你的输入,并且立即执行你提交的命令。)

    交互式与非交互式shell运行时的区别:

    交互式shell下打开进程时,会启用工作控制job control(会影响到其子进程进程组的编号,作业控制模式下被shell打开的进程,进程组号为进程号),否则不会启用(其打开的进程组号继承父进程的进程组,既运行脚本的非交互式shell进程)。这是linux在作业控制中的设计,我准备另起文章探讨。在shell脚本中,使用set -m可以改变脚本的运行模式开启工作控制。

     

    是否登录与是否交互是两个维度的概念,两两组合的四种情况均会出现:

    1、登录交互式  最常见的登录系统后进行操作使用的shell。

    2、非登录非交互式  常见的shell脚本的运行方式。

    3、非登录交互式   在shell中使用bash调出shell、在系统中打开命令行工具等。

    4、登录非交互式   强制使用登录方式打开的shell脚本。可以改变脚本访问的全局文件,在不少情况下也需要使用(远程使用非登录shell调用脚本但需要登录的全局环境时适用)。

    展开全文
  • 摘要:在进行环境变量设置和命令别名的设置的时候,常常会接触到四个概念:交互式bash、非交互式bash、login bash和no login bash。本文主要来澄清这四个概念。 本文来源:bash 深入理解:交互式shell和非交互式...

    摘要:在进行环境变量设置和命令别名的设置的时候,常常会接触到四个概念:交互式bash、非交互式bash、login bash和no login bash。本文主要来澄清这四个概念。


    本文来源:bash 深入理解:交互式shell和非交互式shell、登录shell和非登录shell的区别http://blog.csdn.net/trochiluses/article/details/13767669 


    1.交互式bash与非交互式bash


    交互式模式就是在终端上执行,shell等待你的输入,并且立即执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、退出。当你退出后,shell也终止了。


    shell也可以运行在另外一种模式:非交互式模式,以shell script(非交互)方式执行。在这种模式 下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾EOF,shell也就终止了。


    区别:读取的配置文件不同,交互式bash必然读取~/.bashrc文件;非交互式bash读取的是环境变量BASH_ENV(通常情况下)所指定的配置文件。


    2.login bash与nologin bash


    登陆shell是指:(1)用户登陆时,输入用户名和密码后启动的shell(例如使用ssh登录远程主机等);(2)通过带--login参数的命令:bash --login而启动的shell。


    非登录bash:登录以后所打开的bash,比如通过Ctrl+Alt+T组合键打开的bash环境,直接通过bash命令打开的环境。


    对于用户来说,登陆shell和非登陆shell的主要区别是:启动shell时所执行的startup文件不同。登陆shell执行startup文件为:/etc/profile、~/.bash_profile、~/.bashrc(这里只是从现象上得出的推论,这种推论是有问题的,稍后讨论),而非登陆shell执行的startup文件仅为:~/.bashrc。


    3.bash中解析命令的次序


    在bash中输入一个命令,首先会从which所指定的路径中进行命令寻找(有先后顺序);然后从配置文件的命令别名中寻找。注意,配置文件的修改不会立即影响到bash的环境。

    展开全文
  • 交互式shell和非交互式shell、登录

    千次阅读 2014-11-25 18:11:31
    交互式shell和非交互式shell、登录shell和非登录shell的区别。 首先,这是两个不同的维度来划分的,一个是是否交互式,另一个是是否登录交互式shell和非交互式shell 交互式模式就是shell等待你的输入,并且...
    也算写过一些Bash脚本的人了,不过对与这几个概念,还不是很清楚,于是恶补了一下。

    交互式shell和非交互式shell、登录shell和非登录shell的区别。

    首先,这是两个不同的维度来划分的,一个是是否交互式,另一个是是否登录。

    交互式shell和非交互式shell

    交互式模式就是shell等待你的输入,并且立即执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、签退。当你签退后,shell也终止了。

    shell也可以运行在另外一种模式:非交互式模式,以shell script(非交互)方式执行。
    在这种模式下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾,shell也就终止了。


    chinaunix 论坛中关于登录shell与非登录shell、交互式shell与非交互式Shell的讨论:

    Login Shell:当init3时,mingetty spawn出登录提示符的时候,你输入帐号和密码进入了,出现了shell提示符,这个过程就是登录外壳;

    Interactive Shell:接下来你得到了一个像root@host />这样的提示符,你输入什么,它就解释出什么,这就是交互式外壳;
    你在当前Shell又fork了一个shell(bash),这个bash也是交互式外壳。通常情况下interactive shell是login shell派生出来的。

    Non Interactive Shell:你可能需要学习写一个bash script,用外部shell执行:bash  script.sh,
    它(bash)从第一条命令执行到最后一条然后退出,不与你进行任何交互,它就是非交互式外壳。

    交互式非登录shell就是指你在Gnome图形界面中打开“终端”出来的那种窗口程序,
    和登录shell 相比,它是“非登录”的,你并不需要输入用户名和密码,
    和非交互式shell相比,这是“交互式”的,就像你说的那它:你输入什么,它就解释出什么

    执行exit退出非登录shell状态;
    执行logout退出登录shell状态。

    在登录shell里,确实只读取/etc/profile和~ /.bash_profile, ~/.bash_login, and ~/.profile按顺序最先的一个,并执行其中的命令。除非被 --noprofile选项禁止了;
    在非登录shell里,确实只读取 /etc/bash.bashrc和~/.bashrc

    转自:http://www.51testing.com/html/38/225738-216858.html

    ==========================================
    以下来自另一文
    ==========================================

     当启动shell时,它将运行启动文件来初始化自己。具体运行哪个文件取决于该shell是登陆shell还是非登陆shell的交互方式(比如通过bash),又或者是一个非交互式shell(用来执行shell脚本)。要执行启动文件中的命令,用户就必须具备读的权限,而一般的Linux发行版本都会把对应的命令放在一些启动文件中。

      1:交互式登陆shell

    交互式登陆shell指的是当用户登录系统时所用的那个shell(可以默认指定,如bash shell)。登录shell 将查找几个不同的启动文件来处理其中的命令,
    bash shell 处理文件的顺序如下:

    /etc/profile               
    shell首先执行/etc/profile中的命令。设置这个文件后,可以为系统内所有的bash用户建立默认的特征(不同版本的Linux在此文件放置的命令不尽相同);

    ~/.bash_profile、~/.bash_login、~/.profile        然后shell依次查找这些文件,并执行它找到的第一个文件中的命令。可以将命令放在这些文件中,以重写/etc/profile文件中默认的设置;

    ~/.bash_logout     
    当用户注销时,bash执行文件~/.bash_logout中的命令,这个文件包含了退出会话时执行的清理命令,如:删除临时文件等;

     

    2:交互式非登陆shell

    交互式非登陆shell指的是如果启动了一个bash shell 而没有登陆系统(如在CLI 提示符中键入bash),则启动了一个交互式非登录shell。
    交互式非登录shell并不执行前面提到的启动文件中的命令,然而交互式非登陆shell从登录shell继承了由这些启动文件设置的shell变量。

    /etc/bashrc     
    尽管不是通过bash直接调用,但许多~/.bashrc文件调用/etc/bashrc。这种设置使得超级用户可以为系统内的非登陆shell建立默认属性。

    .bashrc                    交互式非登陆shell执行~/.bashrc文件中的命令,而登陆shell的启动文件(如.bash_profile)通常会运行这个文件。这样,登陆shell和非登陆shell都可以运行.bashrc中的命令了。

     

    3:非交互式shell

    非交互式shell指的是以shell script(脚本)方式运行。
    在这种模式在运行时shell 并不与用户进行交互(除非在运行时需要用户指定运行参数),而是读取存放在文件中的命令并执行它们。
    当它读到文件的结尾,shell 也就终止了。
    这些shell从登陆时就继承了由这些启动文件设置的shell变量。

    BASH_ENV   
    非交互式shell查找环境变量BASH_ENV(或者当作为sh调用时为的ENV),并执行由该变量命名的文件中的命令。

    转自:http://www.cnblogs.com/zhaoyl/archive/2012/07/07/2580744.html

    ==========================================
    以下来自另一文
    ==========================================

    神马是shell

    Shell是一种具备特殊功能的程序,它是介于使用者和 UNIX/Linux 操作系统之核心程序(kernel)间的一个接口。
    为什么我们说 shell 是一种介于系统核心程序与使用者间的中介者呢?
    读过操作系统概论的读者们都知道操作系统是一个系统资源的管理者与分配者,当您有需求时,您得向系统提出;从操作系统的角度来看,它也必须防止使用者因为错误的操作而造成系统的伤害。
    众所周知,对计算机下命令得透过命令(command)或是程序(program);程序有编译器(compiler)将程序转为二进制代码,可是命令呢?
    其实shell 也是一支程序,它由输入设备读取命令,再将其转为计算机可以了解的机械码,然后执行它。

    各种操作系统都有它自己的 shell,以 DOS 为例,它的 shell 就是 command.com 。如同 DOS 下有 NDOS,4DOS,DRDOS 等不同的命令解译程序可以取代标准的 command.com ,UNIX 下除了 Bourne shell(/bin/sh) 外还有 C shell(/bin/csh)、Korn shell(/bin/ksh)、Bourne again shell(/bin/bash)、Tenex C shell(tcsh) … 等其它的 shell。
    UNIX/Linux 将 shell 独立于核心程序之外,使得它就如同一般的应用程序,可以在不影响操作系统本身的情况下进行修改、更新版本或是添加新的功能。


    交互式与非交互式shell /登录shell与非登录shell

    登陆shell与交互式非登陆shell的区别

    1.登录shell
    所谓登录shell,指的是当用户登录系统时所取的那个shell。登录shell属于交互式shell。
    登录shell将查找4个不同的启动文件来处理其中的命令。 bash shell处理文件的顺序如下:
      1: /etc/profile
      2:/etc/profile.d等待配置文件
      3: $HOME/.bash_profile
      4: $HOME/.bash_login
      5 $HOME/.profile
     
    etc /profile是bash shell在系统上的主默认启动文件,系统上每一个用户在登陆时都将执行此文件。
    通过设置这个文件,超级用户可以为全系统内的所有bash用户建立默认特征。不同 Linux版本在此文件放置的命令不尽相同,
    在redflag中,该文件设置了几个重要的变量,
    如:PATH USER LOGNAME MAIL HOSTNAME HISTSIZE  INPUTRC,详情可以查看具体的文件。

    其余3个文件具备相同的功能——提供特定于用户的启动文件。大多数Linux版本只使用其中之一。
    如:RedFlag使用.bash_profile    ubuntu使用.profile .

    shell依次查找~/.bash_profile、
    ~/.bash_login、
    ~/.profile(~是用户主目录的速记符),
    并执行它找到的首个文件中的命令。
    可以将命令放置在这些文件中以覆盖掉/etc/profile文件中的默认设置。
    也就是后面的文件可以覆盖或者修改前面的设置 。

    2. 交互式非登录shell
    如果启动了一个bash shell而没有等录系统(如在CLI提示符中键入bash),
    则启动了一个交互式非登录shell.
    而登录shell的初始化文件(比如.bash_profile)通常会运行这个文件。这样,登录shell和非登录shell都可以使用.bashrc中的命令。
    如以X Window环境登录Linux时,在X环境所起动的终端,那些shell都是非登录shell.
    在交互式非登录shell中并不执行前面提到的初始化文件中的命令。然而,交互式非登录shell从登录shell继承了由这些初始化文件设置的 shell变量。

    (1) $HOME/.bashrc
    交互式非登录shell执行~/.bashrc文件中的命令.在每次执行shell脚本时,都会重新读取这个文件,所以是最完整的。

    但是万事都不是一样的,debain系列的是不同的,如ubuntu
    /etc/profile-->/etc/environment-->$HOME/.profile
    要配置java等变量时,都/etc/environment中



    关于各个文件的作用域,在网上找到了以下说明:
    (1)/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行. 并从/etc/profile.d目录的配置文件中搜集shell的设置。
    (2)/etc/bashrc: 为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取。
    (3)~/.bash_profile: 每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件。
    (4)~/.bashrc: 该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。
    (5)~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件. 另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是"父子"关系。
    (6)
    ~/.bash_profile 是交互式、login 方式进入 bash 运行的
    ~/.bashrc 是交互式 non-login 方式进入 bash 运行的
    通常二者设置大致相同,所以通常前者会调用后者。



    Shell脚本和Shell的初始化
    http://hi.baidu.com/С??ireed/blog/item/f45b3a137b6172d8f6039e62 .html

    Shell脚本用source或者.来获得。
    例:
    假设文件ls.script在文件夹linux下,这个文件夹下还有个文件是example,
    [ireed@redhat linux]$ ls
    example ls.script
    下面是ls.script的内容:
    [ireed@redhat linux]$ cat ls.script
    ls
    对,也就是说ls.script的内容就一行是ls。
    开始实验:


    [ireed@redhat linux]$ source ls.script
    example ls.script
    [ireed@redhat linux]$ ls
    example ls.script
    [ireed@redhat linux]$ . ls.script
    example ls.script
    [ireed@redhat linux]$

    我们看到获得ls.script与运行ls命令会得到同样的效果,都是显示linux文件夹下面的内容,如果你编辑其他的脚本文件,然后获得它,也是可以运行的。


    登录Shell、非登录Shell、交互式Shell与非交互式Shell
                                                                          登录Shell                    交互式Shell
    从虚拟控制台登录Shell                                    是                                   
    通过网络Shell到一台
    远程机器上时登录Shell                                    是                                   
    X初始化Shell                                                      是                                   
    X终端Shell                                                          否                                   
    手动执行bash启动的子Shell                            否                                   
    用在命令替换中的子Shell                                否                                   
    被小括号分组的命令使用的子Shell                否                                   
    执行脚本时使用的子Shell                                否                                   

    也就是说左边有"login:"的就是登录Shell否则就是非登录Shell;交互与非交互Shell也是很好区分的.

    启动登录Shell时获得/etc/profile,/etc/profile.d/*.sh及~/.bash_profile;
    每次Shell启动时获得/etc/bashrc和~/.bashrc;
    每次Shell退出时获得~/.bash_logout
    只有登录Shell可以获得/etc/profile和~/.bash_profile;而/etc/bashrc和~/.bashrc被所有Shell获得.前两个文件用来配置环境变量,只被初始化一次,后两个习惯上用于Shell的自定义,如别名和Shell选项.
    注意对称,对于环境变量,有一个通用的启动文件(/etc/profile)和一个本地的启动文件(~/.bash_profile),前者可以被系统管理员用来配置系统范围,后者被个人用户自定义自己的环境;/etc/bashrc和~/.bashrc也类似.

    转自:http://blog.sina.com.cn/s/blog_896b31c70100xto3.html
    展开全文
  • 交互式shell和非交互式shell、登录shell和非登录shell的区别。 首先,这是两个不同的维度来划分的,一个是是否交互式,另一个是是否登录交互式shell和非交互式shell 交互式模式就是shell等待你的输入,并且...

    此篇文章也还不错: 

    1、交互式SHELL和非交互式SHELL、登录SHELL和非登录SHELL的区别

        http://blog.csdn.net/wisgood/article/details/52043522



    交互式shell和非交互式shell、登录shell和非登录shell的区别。


    首先,这是两个不同的维度来划分的,一个是是否交互式,另一个是是否登录。

    交互式shell和非交互式shell

    交互式 模式就是shell等待你的输入,并且立即执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、签退。当你签退后,shell也终止了。

    shell也可以运行在另外一种模式: 非交互式模式 ,以shell script(非交互)方式执行。
    在这种模式下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾,shell也就终止了。


    chinaunix 论坛中关于登录shell与非登录shell、交互式shell与非交互式Shell的讨论:

    Login Shell:当init3时,mingetty spawn出登录提示符的时候,你输入帐号和密码进入了,出现了shell提示符,这个过程就是登录外壳;

    Interactive Shell:接下来你得到了一个像root@host />这样的提示符,你输入什么,它就解释出什么,这就是交互式外壳;
    你在当前Shell又fork了一个shell(bash),这个bash也是交互式外壳。通常情况下interactive shell是login shell派生出来的。

    Non Interactive Shell:你可能需要学习写一个bash script,用外部shell执行:bash  script.sh,
    它(bash)从第一条命令执行到最后一条然后退出,不与你进行任何交互,它就是非交互式外壳。

    交互式非登录shell就是指你在Gnome图形界面中打开“终端”出来的那种窗口程序,
    和登录shell 相比,它是“非登录”的,你并不需要输入用户名和密码,
    和非交互式shell相比,这是“交互式”的,就像你说的那它:你输入什么,它就解释出什么

    执行exit退出非登录shell状态;

    执行logout退出登录shell状态。

    在登录shell里,确实只读取/etc/profile和~ /.bash_profile, ~/.bash_login, and ~/.profile按顺序最先的一个,并执行其中的命令。除非被 --noprofile选项禁止了;
    在非登录shell里,确实只读取 /etc/bash.bashrc和~/.bashrc

    转自:http://www.51testing.com/html/38/225738-216858.html

    ==========================================
    以下来自另一文
    ==========================================

     当启动shell时,它将运行启动文件来初始化自己。具体运行哪个文件取决于该shell是登陆shell还是非登陆shell的交互方式(比如通过bash),又或者是一个非交互式shell(用来执行shell脚本)。要执行启动文件中的命令,用户就必须具备读的权限,而一般的Linux发行版本都会把对应的命令放在一些启动文件中。

      1:交互式登陆shell

    交互式登陆shell指的是当用户登录系统时所用的那个shell(可以默认指定,如bash shell)。登录shell 将查找几个不同的启动文件来处理其中的命令,
    bash shell 处理文件的顺序如下:

    /etc/profile               
    shell首先执行/etc/profile中的命令。设置这个文件后,可以为系统内所有的bash用户建立默认的特征(不同版本的Linux在此文件放置的命令不尽相同);

    ~/.bash_profile、~/.bash_login、~/.profile         然后shell依次查找这些文件,并执行它找到的第一个文件中的命令。可以将命令放在这些文件中,以重写/etc/profile文件中默认的设置;

    ~/.bash_logout     
    当用户注销时,bash执行文件~/.bash_logout中的命令,这个文件包含了退出会话时执行的清理命令,如:删除临时文件等;

     

    2:交互式非登陆shell

    交互式非登陆shell指的是如果启动了一个bash shell 而没有登陆系统(如在CLI 提示符中键入bash),则启动了一个交互式非登录shell。
    交互式非登录shell并不执行前面提到的启动文件中的命令,然而交互式非登陆shell从登录shell继承了由这些启动文件设置的shell变量。

    /etc/bashrc     
    尽管不是通过bash直接调用,但许多~/.bashrc文件调用/etc/bashrc。这种设置使得超级用户可以为系统内的非登陆shell建立默认属性。

    .bashrc                     交互式非登陆shell执行~/.bashrc文件中的命令,而登陆shell的启动文件(如.bash_profile)通常会运行这个文件。这样,登陆shell和非登陆shell都可以运行.bashrc中的命令了。

     

    3:非交互式shell

    非交互式shell指的是以shell script(脚本)方式运行。
    在这种模式在运行时shell 并不与用户进行交互(除非在运行时需要用户指定运行参数),而是读取存放在文件中的命令并执行它们。
    当它读到文件的结尾,shell 也就终止了。
    这些shell从登陆时就继承了由这些启动文件设置的shell变量。

    BASH_ENV   
    非交互式shell查找环境变量BASH_ENV(或者当作为sh调用时为的ENV),并执行由该变量命名的文件中的命令。

    转自:http://www.cnblogs.com/zhaoyl/archive/2012/07/07/2580744.html

    ==========================================
    以下来自另一文
    ==========================================

    神马是shell

    Shell是一种具备特殊功能的程序,它是介于使用者和 UNIX/Linux 操作系统之核心程序(kernel)间的一个接口。
    为什么我们说 shell 是一种介于系统核心程序与使用者间的中介者呢?
    读过操作系统概论的读者们都知道操作系统是一个系统资源的管理者与分配者,当您有需求时,您得向系统提出;从操作系统的角度来看,它也必须防止使用者因为错误的操作而造成系统的伤害。
    众所周知,对计算机下命令得透过命令(command)或是程序(program);程序有编译器(compiler)将程序转为二进制代码,可是命令呢?
    其实shell 也是一支程序,它由输入设备读取命令,再将其转为计算机可以了解的机械码,然后执行它。

    各种操作系统都有它自己的 shell,以 DOS 为例,它的 shell 就是 command.com 。如同 DOS 下有 NDOS,4DOS,DRDOS 等不同的命令解译程序可以取代标准的 command.com ,UNIX 下除了 Bourne shell(/bin/sh) 外还有 C shell(/bin/csh)、Korn shell(/bin/ksh)、Bourne again shell(/bin/bash)、Tenex C shell(tcsh) … 等其它的 shell。
    UNIX/Linux 将 shell 独立于核心程序之外,使得它就如同一般的应用程序,可以在不影响操作系统本身的情况下进行修改、更新版本或是添加新的功能。


    交互式与非交互式shell /登录shell与非登录shell

    登陆shell与交互式非登陆shell的区别

    1.登录shell
    所谓登录shell,指的是当用户登录系统时所取的那个shell。登录shell属于交互式shell。
    登录shell将查找4个不同的启动文件来处理其中的命令。 bash shell处理文件的顺序如下:
      1: /etc/profile
      2:/etc/profile.d等待配置文件
      3: $HOME/.bash_profile
      4: $HOME/.bash_login
      5 $HOME/.profile
     
    etc /profile是bash shell在系统上的主默认启动文件,系统上每一个用户在登陆时都将执行此文件。
    通过设置这个文件,超级用户可以为全系统内的所有bash用户建立默认特征。不同 Linux版本在此文件放置的命令不尽相同,
    在redflag中,该文件设置了几个重要的变量,
    如:PATH USER LOGNAME MAIL HOSTNAME HISTSIZE   INPUTRC,详情可以查看具体的文件。

    其余3个文件具备相同的功能——提供特定于用户的启动文件。大多数Linux版本只使用其中之一。
    如:RedFlag使用.bash_profile     ubuntu使用.profile .

    shell依次查找~/.bash_profile、
    ~/.bash_login、
    ~/.profile(~是用户主目录的速记符),
    并执行它找到的首个文件中的命令。
    可以将命令放置在这些文件中以覆盖掉/etc/profile文件中的默认设置。
    也就是后面的文件可以覆盖或者修改前面的设置 。

    2. 交互式非登录shell
    如果启动了一个bash shell而没有等录系统(如在CLI提示符中键入bash),
    则启动了一个交互式非登录shell.
    而登录shell的初始化文件(比如.bash_profile)通常会运行这个文件。这样,登录shell和非登录shell都可以使用.bashrc中的命令。
    如以X Window环境登录Linux时,在X环境所起动的终端,那些shell都是非登录shell.
    在交互式非登录shell中并不执行前面提到的初始化文件中的命令。然而,交互式非登录shell从登录shell继承了由这些初始化文件设置的 shell变量。

    (1) $HOME/.bashrc
    交互式非登录shell执行~/.bashrc文件中的命令.在每次执行shell脚本时,都会重新读取这个文件,所以是最完整的。

    但是万事都不是一样的,debain系列的是不同的,如ubuntu
    /etc/profile-->/etc/environment-->$HOME/.profile
    要配置java等变量时,都/etc/environment中



    关于各个文件的作用域,在网上找到了以下说明:
    (1)/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行. 并从/etc/profile.d目录的配置文件中搜集shell的设置。
    (2)/etc/bashrc: 为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取。
    (3)~/.bash_profile: 每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件。
    (4)~/.bashrc: 该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。
    (5)~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件. 另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是"父子"关系。
    (6)
    ~/.bash_profile 是交互式、login 方式进入 bash 运行的
    ~/.bashrc 是交互式 non-login 方式进入 bash 运行的
    通常二者设置大致相同,所以通常前者会调用后者。



    Shell脚本和Shell的初始化
    http://hi.baidu.com/С??ireed/blog/item/f45b3a137b6172d8f6039e62 .html

    Shell脚本用source或者.来获得。
    例:
    假设文件ls.script在文件夹linux下,这个文件夹下还有个文件是example,
    [ireed@redhat linux]$ ls
    example ls.script
    下面是ls.script的内容:
    [ireed@redhat linux]$ cat ls.script
    ls
    对,也就是说ls.script的内容就一行是ls。
    开始实验:


    [ireed@redhat linux]$ source ls.script
    example ls.script
    [ireed@redhat linux]$ ls
    example ls.script
    [ireed@redhat linux]$ . ls.script
    example ls.script
    [ireed@redhat linux]$

    我们看到获得ls.script与运行ls命令会得到同样的效果,都是显示linux文件夹下面的内容,如果你编辑其他的脚本文件,然后获得它,也是可以运行的。


    登录Shell、非登录Shell、交互式Shell与非交互式Shell
                                                                           登录Shell                     交互式Shell
    从虚拟控制台登录Shell                                     是                                     是
    通过网络Shell到一台
    远程机器上时登录Shell                                     是                                     是
    X初始化Shell                                                       是                                     是
    X终端Shell                                                           否                                     是
    手动执行bash启动的子Shell                             否                                     是
    用在命令替换中的子Shell                                 否                                     否
    被小括号分组的命令使用的子Shell                 否                                     否
    执行脚本时使用的子Shell                                 否                                     否

    也就是说左边有"login:"的就是登录Shell否则就是非登录Shell;交互与非交互Shell也是很好区分的.

    启动登录Shell时获得/etc/profile,/etc/profile.d/*.sh及~/.bash_profile;
    每次Shell启动时获得/etc/bashrc和~/.bashrc;
    每次Shell退出时获得~/.bash_logout
    只有登录Shell可以获得/etc/profile和~/.bash_profile;而/etc/bashrc和~/.bashrc被所有Shell获得.前两个文件用来配置环境变量,只被初始化一次,后两个习惯上用于Shell的自定义,如别名和Shell选项.
    注意对称,对于环境变量,有一个通用的启动文件(/etc/profile)和一个本地的启动文件(~/.bash_profile),前者可以被系统管理员用来配置系统范围,后者被个人用户自定义自己的环境;/etc/bashrc和~/.bashrc也类似.

    转自:http://blog.sina.com.cn/s/blog_896b31c70100xto3.html



    /etc/profile、/etc/bashrc、~/.bash_profile、~/.bashrc很容易混淆,他们之间有什么区别?它们的作用到底是什么?
    /etc/profile: 用来设置系统环境参数,比如$PATH. 这里面的环境变量是对系统内所有用户生效的。
    /etc/bashrc:  这个文件设置系统bash shell相关的东西,对系统内所有用户生效。只要用户运行bash命令,那么这里面的东西就在起作用。
    ~/.bash_profile: 用来设置一些环境变量,功能和/etc/profile 类似,但是这个是针对用户来设定的,也就是说,你在/home/user1/.bash_profile 中设定了环境变量,那么这个环境变量只针对 user1 这个用户生效.
    ~/.bashrc: 作用类似于/etc/bashrc, 只是针对用户自己而言,不对其他用户生效。
    另外/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是"父子"关系.
    ~/.bash_profile 是交互式、login 方式进入 bash 运行的,意思是只有用户登录时才会生效。
    ~/.bashrc 是交互式 non-login 方式进入 bash 运行的,用户不一定登录,只要以该用户身份运行命令行就会读取该文件。

    展开全文
  • 以前打开终端还挺快的,自从装了anaconda后,打开终端2 s才会出现,我也是真的操蛋,想改了下又无从下手,留到后面再说吧,只能忍一忍了,引发了交互式交互式登录,以及 .bashrc /etc/profile等问题。...
  • testuser :x:501:501: /home/testuser : /bin/bash 这是我们一般看到的信息,用户登录到/bin/bash就是交互式登录,如果要禁止用户交互式登录就还要修改用户bash ,使用户无法登录: #usermod -s 可以修改用户的...
  • 下面小编就为大家带来一篇浅析mysql交互式连接&非交互式连接。小编觉挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 组策略:交互式登录:不显示最后的用户名 https://blog.csdn.net/weixin_41982957/article/details/107021233 交互式登录:不显示最后的用户名 说明 开启 说明 该安全设置确定是否在 Windows 登录屏幕中显示...
  • 交互式shell和非交互式shell、登录shell和非登录shell的区别。 首先,这是两个不同的维度来划分的,一个是是否交互式,另一个是是否登录交互式shell和非交互式shell 交互式模式就是shell等待你的输入, 并且...
  • 按照bash是否与用户进行交互,可以将其分为“交互式”与“非交互式”;而按照bash是否被用户登陆,又可将其分为“登陆shell”与“非登陆shell”。本文以CentOS系统为例,着重讨论和总结了shell的“交互”与“登陆”...
  • 今天有个朋友跟我聊天时...声明:在启用上次交互式登录之前务必提前做好测试,否则会造成用户端无法登陆的情况,更多内容和注意事项可以参考Technet文章:”Active Directory 域服务:上次交互式登录”https://techn
  • 安全策略、安全设置、本地策略、用户权限分配、允许本地登录 ,进去之后有很多用户组,其中会包括user组。 计算机管理,本地用和组,查看user组成员,这里应该包含与服务器的用户组 Domain User, 如果没有,则...
  • 本地策略不允许您使用交互式登录

    千次阅读 2011-10-20 06:42:35
    此系统的本地策略不允许您采用交互式登录解决方法     如果计算机是一台不在域中的单独的Windows 2000计算机,参考以下步骤:     1) 启动故障计算机至登录状态;     2) 登录到网络中的另外一台...
  • Linux下非交互式sshpass登录

    千次阅读 2016-12-27 21:44:38
    在命令行 非交互的SSH登录的时候,一般我们可以借助于生成用户的公钥私钥对,然后把公钥添加到远程主机的authorized_keys文件,可以实现非交互无密码登录。 其实这里也可以有另外一种方式实现,即用sshpass命令...
  • mysql交互式连接&非交互式连接

    千次阅读 2015-12-01 10:05:23
    交互式操作:通俗的说,就是你在你的本机上打开mysql的客户端,就是那个黑窗口,在黑窗口下进行各种sql操作,当然走的肯定是tcp协议。 非交互式操作:就是你在你的项目中进行程序调用。比如一边是tomcat web服务器...
  • 在工作组模式中一切正常,加入域后也提示欢迎加入域 ,可重启后输入域用户名和密码却提示用户名和密码出错或你的本地策略不允许你采用交互式登录(域用户名和密码是正确的);并且改用此WIN2KPRO客户机的系统管理...
  • 此系统的本地策略不允许您采用交互式登录   解决方法 如果计算机是一台不在域中的单独的Windows xp计算机,参考以下步骤: 1) 启动故障计算机至登录状态; 2) 登录到网络中的另外一台...
  • Linux——交互式任务(SSH自动登录

    千次阅读 2018-06-27 14:49:52
    利用交互式任务来实现一键登录是非常方便的。 以ubuntu为例: 安装expect sudo apt-get install tcl tk expect 编写登录脚本 sudo vim /opt/script_ssh.sh #!/usr/bin/expect set timeout 20 set password &...
  • 由于公司软件的核心在远程桌面,所以由“此系统的本地策略不允许您采用交互式登录”这个问题做一小结。 一: xp登录域环境时,会出现这个问题,当时我是这样解决的:将登陆用户加入通过终端端服务允许登陆...
  • linux禁止用户交互式登陆

    千次阅读 2018-11-22 17:43:04
    创建用户Timmy ,并且禁止该用户交互式登录 useradd -s /sbin/nologin Timmy ##创建用户Timmy,并设置Timmy登陆的shell为/sbin/nologin 修改Timmy用户的密码 查看用户信息,可以看到用户使用的shell是/sbin/nologin...
  • 最近管理的一批机器,有个需求是要统一修改一个帐号的用户名密码,比如将qa帐号...交互式配置本地用户的密码:passwd 命令 [root@host_221-81 ~]# passwd qa Changing password for user qa. New password: BAD PASSWO
  • Java代码里通过ssh连接去调用执行shell,即使是简单常用...需在自己的命令前载入Linux的环境变量设置。 eg: "source /etc/profile;source ~/.bash_profile;source ~/.bashrc;" =======================...
  • 设置了一个终端大小,但是修改窗口大小后,我的Expect不能发现窗口改变. 主要是远程不能抓到本地的WINCH”window size changed”的信号,当我修改我本地终端大小时需要传送信息给spawn. 代码:  my $exp = new...
  • [root@station ~]# useradd gege ...分析:可以看到gege❌2015:2015::/home/gege:/bin/bash内容,其中用户登陆到/bin/bash就是交互式登陆,如果要禁止用户交互式登陆就要修改bash,使用户无法登...
  • 1) 启动故障计算机至登录状态; 2) 登录到网络中的另外一台Windows 2000 或 Windows XP的计算机上,打开开始,单击运行,键入cmd,回车; 3) 在命令行模式下运行 net use \\computername\ipc$ /user:admin
  • 一、expect当你不能把交互式的命令变成非交互式的命令时使用spawn生成 expect捕获 send发送1.方法:设置ssh下次登陆不再需要密码ssh-keygen --------设置公钥ssh-copy-id -i root@10.18.41.62 ---------把公钥传给...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 73,271
精华内容 29,308
关键字:

交互式登录设置