bash 类别简述

本文内容来自man bash。

一. bash分类

bash从不同角度看分为两种,一种是是否登录(login),另一种是是否交互式(interactive)。

登录式shell是启动时:

1. 第0个参数以“-”开头

2. 或使用--login选项

交互式shell是启动时:

1. 没有非选项参数除非用使用了-s选项;

2. 并且没有-c选项;

3. 并且input/outptu与terminal相连;

4. 并且用-i选项

两种不同分法的shell有4种组合方式:

1. 交互登录式shell

2. 交互非登录式shell

3. 非交互登录式shell

4. 非交互非登录式shell

二. bash启动加载文件

1. 登录式shell,不管是不是交互的

(如果相应文件不存在就跳过)

/etc/profile
~/.bash_profile
~/.bash_login
~/.profile

退出时会执行:

~/.bash_logout

2. 交互非登录式shell

/etc/bash.bashrc
~/.bashrc

3. 非交互非登录模式

在执行脚本时,回去找BASH_ENV这个环境变量,并用这个环境变量的值作为脚本名执行

三. 总结:

我的系统是debian,查看相应文件可以看到

head -n1 ~/.profile
~/.profile: executed by the command interpreter for login shells.
head -n1 ~/.basrc
~/.bashrc: executed by bash(1) for non-login shells

一般来说,在~/.profile中会去source ~/.bashrc,也就是说我们平时配置环境是,直接在~/.bashrc中配置即可。

最后说一下如何检测当前shell是否为交互式的

 determine within a startup script whether or not Bash isrunning interactively,test the value of the ‘-’ special parameter.It containsi when the shell is interactive. For example:

case "$-" in
*i*)	echo This shell is interactive ;;
*)	echo This shell is not interactive ;;
esac
Alternatively, startup scripts may examine the variablePS1; it is unset in non-interactive shells, and set ininteractive shells. Thus:
if [ -z "$PS1" ]; then
        echo This shell is not interactive
else
        echo This shell is interactive
fi
参考:
http://www.gnu.org/software/bash/manual/html_node/Is-this-Shell-Interactive_003f.html#Is-this-Shell-Interactive_003f
http://www.gnu.org/software/bash/manual/html_node/Bash-Startup-Files.html
http://blogread.cn/it/article/6007?f=sa
时间: 2025-01-20 11:44:30

bash 类别简述的相关文章

Linux系统中bash shell编程的10个基础问题讲解_linux shell

第1问:为何叫做shell?在介绍 shell 是什么东西之前,不妨让我们重新审视使用者与电脑的关系.我们知道电脑的运作不能离开硬件,但使用者却无法直接对硬件作驱动,硬件的驱动只能透过一个称为"操作系统(Operating System)"的软件来控管,事实上,我们每天所谈的linux,严格来说只是一个操作系统,我们称之为"核心(kernel)".然而,从使用者的角度来说,使用者也没办法直接操作kernel,而是透过kernel的"外壳"程序,也

(转) 简述生成式对抗网络

  简述生成式对抗网络 [转载请注明出处]chenrudan.github.io 本文主要阐述了对生成式对抗网络的理解,首先谈到了什么是对抗样本,以及它与对抗网络的关系,然后解释了对抗网络的每个组成部分,再结合算法流程和代码实现来解释具体是如何实现并执行这个算法的,最后给出一个基于对抗网络改写的去噪网络运行的结果,效果虽然挺差的,但是有些地方还是挺有意思的. 1. 对抗样本 2. 生成式对抗网络GAN 3. 代码解释 4. 运行实例 5. 小结 6. 引用 1. 对抗样本(adversarial

《UNIX/Linux 系统管理技术手册(第四版)》——2.2 bash脚本编程

2.2 bash脚本编程 UNIX/Linux 系统管理技术手册(第四版) bash特别适合编写简单的脚本,用来自动执行那些以往在命令行输入的操作.在命令行用的技巧也能用在bash的脚本里,反之亦然,这让用户在bash上投入的学习时间获得了最大的回报.不过,一旦bash脚本超过了100行,或者需要的特性bash没有,那么就要换到Perl或者Python上了. bash脚本的注释以一个井号(#)开头,并且注释一直延续到行尾.和命令行中一样,可以把逻辑上的一行分成多个物理上的多行来写,每行末尾用反斜

类别-Objective-C基础教程中一句话读不懂,求解!

问题描述 Objective-C基础教程中一句话读不懂,求解! 在第12章类别前边第一段中有:"当使用类方法stringWithFormatFor生成一个新类时,你新建的NSString类的子类无法返回." 解决方案 NSString实际上只是一个类簇的前台表示,因而无法为这样的类创建子类.在其他情况下,你也许可以创建子类但你使用的却是工具包或类库,因为又无法处理新类的对象.例如,当使用类方法stringWithFormatFor生成一个新的字符串时,你新建的NSString类的子类无

Flash 8 AS做滤镜效果的类别整理

滤镜 用as做滤镜效果,每种滤镜效果对应一个类别,这些类别将来会在Macromedia\Flash 8\语系\First Run\Classes\FP8\flash\filters 这个资料夹中找到说明档一.渐变斜角--GradientBevelFilter类别二.投影--DropShadowFilter类别三.模煳--BlurFilter类别(这个最容易了,参数少)四.光晕--GlowFilter类别五.渐层光晕--GradientGlowFilter类别六.斜角--BevelFilter类别

RHCE学习<14>熟悉Bash常用文本处理工具用法

1.grep命令:查找文件里符合条件的字符串 一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来 语法格式: grep [options] -i:ignore-case 忽略大小写差别 -c:count 只打印匹配的总行数,不显示匹配的内容信息 -n:line-number 在匹配的行前面打印行号 -v:revert-match 反检索,只显示不匹配的行 -r:recursion递归地,读取每个文件夹下的所有档案 -l :不显示平常一般的输出结果,只显示符合的文件名称 2.

ios-iOS中在类别中动态新增了的可变字典属性变成了不可变字典

问题描述 iOS中在类别中动态新增了的可变字典属性变成了不可变字典 想在category中新增个属性来用,创建的可变字典属性,也做了相关关联,结果用不了setobject方法,打印出来一看发现变成了不可变字典类型,希望有大神帮我看看哪里出问题了: static void *myAllPropertiesDicKey = &myAllPropertiesDicKey; @implementation FatherClass (Category) //add setter and getter me

linux Bash 快捷键大全

  一.编辑命令 Ctrl + a :移到命令行首 Ctrl + e :移到命令行尾 Ctrl + f :按字符前移(右向) Ctrl + b :按字符后移(左向) Alt + f :按单词前移(右向) Alt + b :按单词后移(左向) Ctrl + xx:在命令行首和光标之间移动 Ctrl + u :从光标处删除至命令行首 Ctrl + k :从光标处删除至命令行尾 Ctrl + w :从光标处删除至字首 Alt + d :从光标处删除至字尾 Ctrl + d :删除光标处的字符 Ctrl

备份MySQL数据库的Bash脚本

If you host your own blog or any Web-based application running on the stack, you should have a backup system in place for keeping data stored in MySQL databases safe. There are several solutions that can help you with that, but nothing beats a simple