精华内容
参与话题
问答
  • Java代码里通过ssh连接去调用执行shell,即使是简单常用的命令也无法执行,如下图报错: 这个是由于profile的原因。需在自己的命令前载入Linux的环境变量设置。 eg: "source /etc/profile;source ~/.bash_...

    Java代码里通过ssh连接去调用执行shell,即使是简单常用的命令也无法执行,如下图报错:

     

    这个是由于profile的原因。需在自己的命令前载入Linux的环境变量设置。

    eg:

    "source /etc/profile;source ~/.bash_profile;source ~/.bashrc;"

     

     

     

     

    =====================================以下待整理===============

    https://www.cnblogs.com/xuange306/p/9436126.html

    https://blog.csdn.net/gui951753/article/details/79154496

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

    展开全文
  • 2、交互shell非交互shell 交互式模式:在终端上执行,shell等待你的输入,并且立即执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行...
    1、从两个不同维度来划分,是否交互式,是否登录
    2、交互式shell和非交互式shell
    • 交互式模式:在终端上执行,shell等待你的输入,并且立即执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、退出。当你退出后,shell也终止了。
    • 非交互式模式:以shell script(非交互)方式执行。在这种模式 下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾EOF,shell也就终止了。
    • 可以通过打印“$-”变量的值(代表着当前shell的选项标志),查看其中的“i”选项(表示interactive shell)来区分交互式与非交互式shell。
    [root@client02 ~]# echo $-
    himBH
     
    [root@client02 ~]# cat test.sh 
    echo $-
    [root@client02 ~]# sh test.sh 
    hB
    3、登录shell和非登陆shell
    • 登录shell:需要用户名、密码登录后才能进入的shell(或者通过--login”选项生成的shell)。
    • 非登录shell:不需要输入用户名和密码即可打开的Shell,例如:直接命令“bash”就是打开一个新的非登录shell;在Gnome或KDE中打开一个“终端”(terminal)窗口程序也是一个非登录shell。
    • 退出一个登录shell:exit或者logout;退出一个非登录shell:只能exit。
    [root@client02 ~]# su - zhuwan
    Last login: Mon Sep  3 18:26:24 CST 2018 on pts/0
    [zhuwan@client02 ~]$ exit
    logout
    [root@client02 ~]# su - zhuwan
    Last login: Mon Sep  3 19:14:45 CST 2018 on pts/0
    [zhuwan@client02 ~]$ logout
    [root@client02 ~]# su zhuwan
    [zhuwan@client02 root]$ exit
    exit
    [root@client02 ~]# su zhuwan
    [zhuwan@client02 root]$ logout
    bash: logout: not login shell: use `exit'
    • 登录shell 时,其bash进程名为”-bash“;非登陆shell时,bash进程名为”bash”
    [root@client02 ~]# su - zhuwan
    Last login: Mon Sep  3 19:15:09 CST 2018 on pts/0
    [zhuwan@client02 ~]$ echo $0
    -bash
    [zhuwan@client02 ~]$ logout
    [root@client02 ~]# su zhuwan
    [zhuwan@client02 root]$ echo $0
    bash
    4、登录shell和非登陆shell读取配置文件的区别
    • 登录shell:/etc/profile -> (~/.bash_profile | ~/.bash_login | ~/.profile) ->( ~/.bashrc -> /etc/bashrc) -> ~/.bash_logout
      • .profile(由Bourne Shell和Korn Shell使用)和.bash_login(由C Shell使用)两个文件是.bash_profile的同义词,目的是为了兼容其它Shell
      • .bash_profile中一般会执行.bashrc
    • 交互式非登陆shell: ~/.bashrc  -> /etc/bashrc 
    6、crontab中shell的特点
        crontab脚本,既不是交互式shell,也不是登录shell,不会执行上述的配置文件,有如下两种处理方法:
    • 可以把shebang改为#!/bin/bash -l让脚本用登录Shell来解释执行,这个时候,执行脚本要采用路径执行的方式
    • 调用Bash解释器,加-l参数,即 /bin/bash -l script

    转载于:https://www.cnblogs.com/pigwan7/p/9593540.html

    展开全文
  • 家目录下的配置文件.bashrc中rc的含义是resource configuration什么是登陆shell?什么是非登陆shell登陆shell是指:(1)用户...对于用户来说,登陆shell非登陆shell的主要区别是:启动shell时所执行的startup文

    家目录下的配置文件.bashrc中rc的含义是resource configuration

    什么是登陆shell?什么是非登陆shell?

    登陆shell是指:(1)用户登陆时,输入用户名和密码后启动的shell;(2)通过带--login参数的命令:bash --login而启动的shell。对于用户来说,登陆shell和非登陆shell的主要区别是:启动shell时所执行的startup文件不同。我在/etc/profile、~/.bash_profile、~/.bashrc三个文件中分别通过echo命令打印出文件名。执行命令如下所示:

    wangjk@wangjiankun:~$ bash
    .bashrc
    wangjk@wangjiankun:~$ bash --login
    etc/profile
    .bash_profile
    .bashrc
    wangjk@wangjiankun:~$

    上面的结果说明:登陆shell执行startup文件为:/etc/profile、~/.bash_profile、~/.bashrc(这里只是从现象上得出的推论,这种推论是有问题的,稍后讨论),而非登陆shell执行的startup文件仅为:~/.bashrc。

    bash作为登陆shell是由/etc/login程序解析/etc/passwd文件而指定的,例如:wangjk:x:1000:1000:wangjiankun,,,:/home/wangjk:/bin/bash,其中红色域指定了用户的登录shell是bash。

    事实上,bash作为登陆shell启动时执行的startup文件如下:

    • /etc/profile
    • ~/.bash_profile,~/.bash_login or ~/.profile, first existing readable file is read

    而bash作为非登陆shell启动时读取~/.bashrc。注意,作为登陆shell时bash并不读取~/.bashrc,但是在文件~/.bash_profile中通常都有如下语句来读取~/.bashrc:

    if [ –f  ~/.bashrc ]; then . ~/.bashrc; fi

    以上讨论的是交互式bash shell,其实shell有两种工作模式,就是:交互式和非交互式,执行脚本时,shell就工作在非交互式模式下。在非交互模式下,bash读取的startup文件由环境变量BASH_ENV来决定,例如,我在~/.test文件中用echo命令打印语句:I test non-interactive shell,在test.sh脚本中打印语句:this file is test.sh,运行输出结果如下:

    wangjk@wangjiankun:~$
    wangjk@wangjiankun:~$ echo $BASH_ENV

    wangjk@wangjiankun:~$ ./test.sh                                            
    this file is test.sh
    wangjk@wangjiankun:~$ export BASH_ENV=~/.test
    wangjk@wangjiankun:~$ ./test.sh                                            
    I test non-interactive shell
    this file is test.sh
    wangjk@wangjiankun:~$

    注意,中间的那个空行表示环境变量BASH_ENV为空,所以第一次运行脚本test.sh时只输出了一句话,在定义了环境变量BASH_ENV为~/.test以后运行脚本test.sh就打印了两句话其中第一句是运行文件~/.test打印出来的。

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

    千次阅读 2017-01-03 23:02:04
    登录与登录shell的区别: 直观区分方式:是否需要输入用户名密码。 转换: 登录可以转换成登录 使用--login 考虑转换情况,相对科学的区分:既不使用密码,也不使用--login转换的是非登录,其他都是登录。 登录与...

    登录与非登录shell的:

    区分:是否需要输入用户名密码。

    转换:

    非登录可以转换成登录 使用--login

    考虑转换情况,相对科学的区分:既不使用密码,也不使用--login转换的是非登录,其他都是登录。

    登录与非登录运行shell的区别:

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

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


    交互式与非交互式shell:

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

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

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


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

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

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

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

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

    展开全文
  • 一般会有四种模式:交互式登陆非交互式登陆交互式非登陆交互非登陆交互式非交互式对环境变量的加载: +----------------+--------+-----------+---------------+ | | login |interactive|non-...
  • 曾经写过“交互式shell非交互式shell登录shell非登录shell的区别”,但那时理解相对更浅一些,现在多了一点认识,把这篇文章稍微完善一下吧。 交互式shell非交互式shell登录shell非登录shell的区别。...
  • 在解读shell之前要把bash理解一下,把它看成一种多层的模式。要清楚shell并不是某一个时间里只能存在一个的。...用户登录linux之后,系统会启动一个用户shell,在这个shell里,可以使用shell命令或者声明变量,...
  • #!/bin/bash ...#这是一个交互式登录指定用户名以及密码的脚本 uname=zhangsan passwd=123 read-p"Pleaseenteryourname:"UNAME read-p"Pleaseenteryourpasswd:"PASSWD if["$UNAME"=="zhangsan"]...
  • 交互式shell非交互式shell登录

    千次阅读 2014-11-25 18:11:31
    交互式shell非交互式shell登录shell非登录shell的区别。 首先,这是两个不同的维度来划分的,一个是是否交互式,另一个是是否登录交互式shell非交互式shell 交互式模式就是shell等待你的输入,并且...
  • 以前打开终端还挺快的,自从装了anaconda后,打开终端2 s才会出现,我也是真的操蛋,想改了下又无从下手,留到后面再说吧,只能忍一忍了,引发了交互式非交互式登录,以及 .bashrc /etc/profile等问题。...
  • 按照bash是否与用户进行交互,可以将其分为“交互式”与“非交互式”;而按照bash是否被用户登陆,又可将其分为“登陆shell”与“非登陆shell”。本文以CentOS系统例,着重讨论和总结了shell的“交互”与“登陆”...
  • Shell 交互输入

    千次阅读 2017-08-15 22:11:57
    场景描述如果脚本中使用ssh 登录服务器,如何用shell实现自动输入密码呢? 其实有三种办法:1.... expect主要适用于交互脚本中,详细参见1,内容比较多,这里只写如何解决自动用ssh登录服务器shell一样, 需要安装
  • shell 交互处理 1.expect expect可以用来实现交互的功能,是根据脚本与其他交互式程序“对话”的程序。在脚本之后,Expect知道程序可以期望什么,正确的响应...非交互式ssh登陆 [klaus@localhost chapt5]$ cat s...
  • Linux 多种 shell 的学习笔记
  • shell中自动交互的方法

    万次阅读 2018-05-30 17:41:55
    第一种:输入重定向Here Document重定向操作符command << delimiter是一种非常有用的...最常见的delimiter分界符是EOF,当然完全可以自定其他字符。Here Document 是 Shell 中的一种特殊的重定向...
  • 摘要:在进行环境变量设置和命令别名的设置的时候,常常会接触到四...本文来源:bash 深入理解:交互式shell非交互式shell登录shell非登录shell的区别http://blog.csdn.net/trochiluses/article/details/1376...
  • shell简单的交互式脚本

    千次阅读 2013-08-16 15:32:59
    使用tftp服务从192.168.3.164服务器上下载haha.txt文件到本机目录下来测试shell #!/bin/bash /usr/bin/tftp 192.168.3.165 get haha.txt quit upload_rtt_flags 自己测试通过
  • 交互式提示shell脚本

    2013-11-23 11:24:45
    今天闲着无事分享个我之前写的一个交互式提示的shell脚本,虽然很简单,但是我感觉挺实用的。比如我们现在生产环境批量更新代码是通过脚本控制的,脚本的参数很多,有时候脑袋发蒙的时候就容易执行错,这样加个交互...
  • shell使用ssh交互登录

    千次阅读 2015-07-14 19:52:01
    简单的说,如果要远程执行脚本,...在机器B上,脚本里面有调用sqlplus的,ssh登陆到B上执行脚本没问题,但从A上远程执行报错,提示找不到sqlplus这个命令。 使用VPN,每次都要在Terminal上重复输入命令: ssh -
  • 本文讲的是将简单的shell升级完全交互式的TTY,每个pentester都知道,当用netcat反弹一个反向shell并且看到详细的netcat消息跟输出时,这种感觉爽歪歪。 当然他们也知道shell丢失时的沮丧,运行了一个不好的命令...
  • Linux用户在登陆到Linux服务器时,一些登陆的提示欢迎信息,以及特定的...Linux中的这个shell环境会读取很多不同的配置文件来达成上述目的,同时还有登陆shell非登陆shell的区分。本文对此作简要描述,供大家参考!
  • 最近在给公司搭建大数据集群(Centos7),需要做免密登录,十几台机器,生成密钥后需拷贝到相应的机器,不用shell脚本操作太麻烦了,就研究了下怎么脚本拷贝密钥时自动输入yes和密码,操作记录如下: 1 下载expect ...
  • 什么80%的码农都做不了架构师?>>> ...
  • 首先一点是明确的:/etc/profile是设置所有用户的环境变量的配置文件,/home/omm/.profile是针对特定的用户设置环境变量的配置文件(omm用户)。 但是重要的区别是:/etc/profile并不是每次都会加载的。它要区分...
  • 2019独角兽企业重金招聘Python工程师标准>>> ...
  • 最近某漏洞比较泛滥 全球很多网站该漏洞都没修补 直接可以管理员权限。 对于windows直接3389上去 对于linux需要费点功夫 ...useradd -u 0-o-g root-G root -d /home/...-u 0 指将uid指定0(零)与root相同,登录...

空空如也

1 2 3 4 5 ... 20
收藏数 52,628
精华内容 21,051
关键字:

登陆shell设置为非交互