webacoo引入交互式shell_交互式shell和非交互式shell - CSDN
精华内容
参与话题
  • shell提示输入一个变量,赋值个MY_FILE_NAME vim input.sh #!/bin/bash read -p "Please input a filename1:" MY_FILE_NAME1 read -p "Please input a filename3:" MY_FILE_NAME2 echo your...

    让shell提示输入一个变量,赋值个MY_FILE_NAME
    vim input.sh

    #!/bin/bash
    read -p "Please input a filename1:" MY_FILE_NAME1
    read -p "Please input a filename3:" MY_FILE_NAME2
    echo your input filename1="$MY_FILE_NAME1" filename2="$MY_FILE_NAME2"
    

    让上面的input.sh自动输入往下执行:

    echo -e "fileA\nfileB\n" | ./input.sh

    输出:
    your input filename1=fileA filename2=fileB

    展开全文
  • 曾经写过“交互式shell和非交互式shell、登录shell和非登录shell的区别”,但那时理解相对更浅一些,现在多了一点认识,把这篇文章稍微完善一下吧。 交互式shell和非交互式shell、登录shell和非登录shell的区别。...

    曾经写过“交互式shell和非交互式shell、登录shell和非登录shell的区别”,但那时理解相对更浅一些,现在多了一点认识,把这篇文章稍微完善一下吧。

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

    交互式shell和非交互式shell(interactive shell and non-interactive shell)
    交互式模式就是在终端上执行,shell等待你的输入,并且立即执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、退出。当你退出后,shell也终止了。
    shell也可以运行在另外一种模式:非交互式模式,以shell script(非交互)方式执行。在这种模式 下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾EOF,shell也就终止了。
    可以通过打印“$-”变量的值(代表着当前shell的选项标志),查看其中的“i”选项(表示interactive shell)来区分交互式与非交互式shell。


    登录shell和非登录shell
    登录shell:是需要用户名、密码登录后才能进入的shell(或者通过”–login”选项生成的shell)。
    非登录shell:当然就不需要输入用户名和密码即可打开的Shell,例如:直接命令“bash”就是打开一个新的非登录shell,在Gnome或KDE中打开一个“终端”(terminal)窗口程序也是一个非登录shell。
    执行exit命令,退出一个shell(登录或非登录shell);
    执行logout命令,退出登录shell(不能退出非登录shell)。

    bash是 login shell 时,其进程名为”-bash“ 而不是”bash”。 比如下面的命令行演示:
    man bash: A login shell is one whose first character of argument zero is a -, or one started with the –login option.

    总结一下曾经看在chinaunix论坛中看到的关于登录shell与非登录shell、交互式shell与非交互式shell的讨论:
    Login Shell:当init3时,mingetty spawn出登录提示符的时候,你输入帐号和密码进入了,出现了shell提示符,这个过程就是登录shell;
    Interactive Shell:接下来你得到了一个像“root@host />”这样的提示符,你输入什么,它就解释出什么,这就是交互式shell;你在当前shell又fork了一个 shell(bash),这个bash也是交互式shell。通常情况下interactive shell是login shell派生出来的。
    Non Interactive Shell:你需要写一个bash script,用外部shell执行“bash script.sh”命令,它(bash)从可以第一条命令执行到最后一条然后退出,不与你进行任何交互,它就是非交互式shell。
    交互式非登录shell,例如你在Gnome图形界面中打开“终端”出来的那种窗口程序,和登录shell相比,它是“非登录”的,你并不需要输入用户名和密码,和非交互式shell相比,这是“交互式”的,就像你说的那它“你输入什么,它就解释什么”。

    对于Bash来说,登录shell(包括交互式登录shell和使用“–login”选项的非交互shell),它会首先读取和执行/etc/profile全局配置文件中的命令,然后依次查找~/.bash_profile、~/.bash_login 和 ~/.profile这三个配置文件,读取和执行这三个中的第一个存在且可读的文件中命令。除非被“–noprofile”选项禁止了。
    在非登录shell里,只读取 ~/.bashrc (和 /etc/bash.bashrc、/etc/bashrc )文件,不同的发行版里面可能有所不同
    ,如RHEL6.3中非登录shell仅执行了“~/.bashrc”文件(没有执行/etc/bashrc),而KUbuntu10.04中却依次执行了/etc/bash.bashrc 和 ~/.bashrc 文件。
    对于这些规则,可以直接在相应的配置文件中加一些echo命令来验证其真实性。

    参考资料:man bash (搜索interactive、login等关键)

    展开全文
  • 首先我们需要把bash理解为一种模式,我们不如把这种模式想象成类似于洋葱一样的结构,我们可以一层一层剥开,也就是说我们可以一层一层的进入子shell。就好比我们进入一栋楼,打开一个房间是一个环境,在当前这个...

     首先我们需要把bash理解为一种模式,我们不如把这种模式想象成类似于洋葱一样的结构,我们可以一层一层剥开,也就是说我们可以一层一层的进入子shell。就好比我们进入一栋楼,打开一个房间是一个环境,在当前这个房间我们又看到了一个门,当我们打开这个门的时候,我们就已经进入了新的环境,也就是新的bash中。这牵扯到一个父shell和子shell的问题。

     用户登录到Linux系统后,系统将启动一个用户shell。在这个shell中,可以使用shell命令或声明变量,也可以创建并运行 shell脚本程序。运行shell脚本程序时,系统将创建一个子shell。此时,系统中将有两个shell,一个是登录时系统启动的shell,另一 个是系统为运行脚本程序创建的shell。当一个脚本程序运行完毕,它的脚本shell将终止,可以返回到执行该脚本之前的shell。从这种意义上来 说,用户可以有许多 shell,每个shell都是由某个shell(称为父shell)派生的。
     在子 shell中定义的变量只在该子shell内有效。如果在一个shell脚本程序中定义了一个变量,当该脚本程序运行时,这个定义的变量只是该脚本程序内 的一个局部变量,其他的shell不能引用它,要使某个变量的值可以在其他shell中被改变,可以使用export命令对已定义的变量进行输出。 export命令将使系统在创建每一个新的shell时定义这个变量的一个拷贝。这个过程称之为变量输出。
    同时,在我们使用shell的同时,我们应该清楚shell的一些配置文件的存放位置,按照范围来分,可以分为两种:

    (1)全局配置:

    /etc/profile
    /etc/profile.d/*.sh
    /etc/bashrc

    (2)个人配置:

    ~/.bash_profile
    ~/.bashrc

     我们可以根据shell是否是交互式和shell是否是登录式这两个维度,来对shell进行分类。

    交互式shell和非交互式shell(interactive shell and non-interactive shell)

     交互式模式就是在终端上执行,shell等待你的输入,并且立即执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、退出。当你退出后,shell也终止了。
     shell也可以运行在另外一种模式:非交互式模式,以shell script(非交互)方式执行。在这种模式 下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾EOF,shell也就终止了。

     举个例子,最常见的交互式shell,就是我们利用虚拟机登录Linux系统时的那个等待登录界面,大概如下图所示:

    系统在等待我们键入登录的用户名和密码,这就是一种交互式shell,而非交互式shell就像我们写的那些很简单的脚本,比如一个脚本展示出:helloworld。这个脚本不需要我们对其进行交互,它就只是很简单的将其脚本中的命令按顺序执行。

    登录式shell和非登录式shell

      登录shell:是需要用户名、密码登录后才能进入的shell(或者通过--login”选项生成的shell)。
    非登录shell:当然就不需要输入用户名和密码即可打开的Shell,例如:直接命令“bash”就是打开一个新的非登录shell,在Gnome或KDE中打开一个“终端”(terminal)窗口程序也是一个非登录shell。
    执行exit命令,退出一个shell(登录或非登录shell);
    执行logout命令,退出登录shell(不能退出非登录shell)。

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

    交互式登录:(清除掉所有变量,通过文件重新读入)
    (1)直接通过终端输入账号密码登录
    (2)使用“su - UserName”切换的用户
    执行顺序:(影响该shell的配置文件)
    /etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile--> ~/.bashrc--> /etc/bashrc

    非交互式登录:(会继承上一个shell的全部变量)
    (1)su UserName
    (2)图形界面下打开的终端
    (3)执行脚本   (当我们执行脚本的时候.我们就已经进入到了一个子shell)
    (4)任何其它的bash实例
    执行顺序:(影响该shell的配置文件)

    ~/.bashrc--> /etc/bashrc--> /etc/profile.d/*.sh

     使用./test.sh或者 bash ./test.sh执行脚本的时候,是开启一个子shell,这个子shell能继承上一个父shell的变量,而这个子shell的变量,随着子shell的退出而消失。当我们用. test.sh 或者source test.sh时,不开启子shell,在当前shell运行,子shell中的所有值都影响当前。

     一般我们对shell进行一些配置的时候,通常都是对~/.bashrc 和/etc/bashrc这两个文件进行一些配置。

    展开全文
  • 摘要:在进行环境变量设置和命令别名的设置的时候,常常会接触到四个概念:交互式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脚本交互之:自动输入密码

    万次阅读 2016-04-09 19:54:39
    平时在控制台输入指令如:sudo、ssh、ftp或者修改admin权限的文件时候都会要求输入password,但是在she'll脚本运行过程中该如何交互实现自动输入密码呢? 下面总结三种实现方法。 一、重定向:用重定向方法实现交互...
  • Linux-----Shell脚本交互实现自动输入密码
  • Linux中shell脚本运行时经常需要进行交互,比如安装软件的过程中对license声明的确认,需要输入yes,回车之类的确认信息。这个在自动化安装的时候就会是个问题。 通常对于这个问题比较灵活的解决方法就是TCL的...
  • shell中自动交互的方法

    万次阅读 2018-05-30 17:43:29
    delimiter是一种非常有用的命令,shell将分界符delimiter之后直至下一个同样的分界符之前的所有内容都作为输入,遇到下一个分界符, shell就知道输入结束了。最常见的delimiter分界符是EOF,当然完全可以自定为其他...
  • shell脚本中自动化交互输入

    千次阅读 2018-11-15 18:35:06
    有的shell脚本需要交互输入,如果需要批量或者自动化,可以根据实际情况按照如下方法处理 1.重定向 这个方法很简单,把需要输入的内容按每行写入到文档中,然后运行脚本 ./vpncmd < content 2.使用管道 ...
  • 交互式shell和非交互式shell、登录…

    千次阅读 2014-11-25 17:56:45
    交互式shell和非交互式shell、登录shell和非登录shell的区别。 首先,这是两个不同的维度来划分的,一个是是否交互式,另一个是是否登录。 交互式shell和非交互式shell 交互式模式就是shell等待你的输入,并且...
  • shell交互输入自动化

    万次阅读 2012-06-03 09:51:48
    shell交互输入自动化 shell中有时我们需要交互,但是呢我们又不想每次从stdin输入,想让其自动化,这时我们就要使shell交互输入自动化了。这个功能很有用的哟。好好学习。 1 利用重定向  重定向的方法应该是最...
  • 按照bash是否与用户进行交互,可以将其分为“交互式”与“非交互式”;而按照bash是否被用户登陆,又可将其分为“登陆shell”与“非登陆shell”。本文以CentOS系统为例,着重讨论和总结了shell的“交互”与“登陆”...
  • 交互式输入shell参数

    千次阅读 2012-06-15 13:12:31
    Let's write a script that reads input interactively and uses this script for automation examples: #!/bin/bash #Filename: interactive.sh read -p "Enter number:" no ; #-p "Enter number:
  • shell脚本中使用alias

    千次阅读 2017-03-26 17:02:28
    我们日常使用shell输入命令得到结果的方式是交互式的方式,而shell脚本使用的是非交互式方式。    shell提供了alias功能来简化我们的日常操作,使得我们可以为一个复杂的命令取一个简单的名字,从而提高我们...
  • linux shell 根据进程名获取pid

    万次阅读 2017-11-18 13:57:12
    交互式 Bash Shell 获取进程 pid Bash Shell 脚本获取进程 pid 获取 Shell 脚本自身进程 pid 查看指定进程是否存在导读Linux 的交互式 ShellShell 脚本存在一定的差异,主要是由于后者存在一个独立的运行进程,...
  • python交互模式下清屏

    万次阅读 2015-12-15 00:29:42
    在Linux shell中,清屏操作是clear;在Win cmd中,清屏操作是cls。 在交互模式中使用python,如果要清屏,可以import os,通过os.system()来调用系统命令clear或者cls来实现清屏。 >>> import os >>> os.system('...
  • paramiko实现ssh的交互式连接

    千次阅读 2018-06-05 21:07:13
    利用python3+实现,命名为interactive.pyimport socket import sys # windows does not have termios... try: import termios import tty has_termios = True except ImportError: has_termios = False ...
  • 要搞清bashrc与profile的区别,首先要弄明白什么是交互式shell和非交互式shell,什么是login shell 和non-login shell交互式模式就是shell等待你的输入,并且执行你提交的命令。这种模式被称作交互式是因为shell...
  • 为使Bash更好地为我们服务,我们需定制bash shell环境。 ~/.bash_profile、~/.bashrc、和~/.bash_logout 1.上面这三个文件是bash shell的用户环境配置文件,位于用户的主目录下。其中.bash_profile是最重要的...
  • --------------------------------------------------------------------------------------------- ... SQLMAP渗透笔记之交互shell及命令执行(即os参数的使用) ----------------------------------
1 2 3 4 5 ... 20
收藏数 1,646,821
精华内容 658,728
关键字:

webacoo引入交互式shell