linux总结(2)——环境变量与shell

在工作中写shell脚本时,常常困难的不是shell脚本本身,而是环境变量(比如环境变量的配置)、执行shell脚本(bash执行、.执行、sh执行等)、父bash与子bash等等问题,会让人在不经意间犯错误,总结总结比较好。


1. 机器上有哪些shell?在/etc/shells下查看。


2. 不同用户登录时使用哪只shell?在/etc/passwd下查看。


3. bash是最常用的,linux的默认shell。它有几个比较好的功能:(1)命令记录history,命令会记录在~/.bash_history,缓存在内存中,注销时刷到该文件中。(2)Tab,命令补齐功能。(3)别名功能alias,亲测该功能非常好用,比如alias mycatlog='tail -50 /opt/XXXX.log' 这样,查看日志会相当方便,总之将一些自己的习惯定义过去。(4)通配符


4. =连接变量赋值,a="$LANG"会取到LANG变量的实际值,a='$LANG'会取到$LANG这个字符串。如果变量赋值时需要某些命令的执行结果,用``或者$()将命令包住,此时被包住的命令会先执行,输出结果。取消变量用unset。使自定义变量变成环境变量用export。


5. 父程序和子程序,在父程序中激活的程序称作子程序,比如在当前环境中执行bash,进入到子bash,此时无法用父bash的非环境变量,除非在父程序中用export将变量导出。


6. env能查看所有环境变量,单用export也是查看环境变量。set查看自定义变量和一些与bash操作接口有关的变量。其中set看到的几个变量很有用:(1)$,本shell的PID。(2)?,上个命令的回传值,上个命令顺利地运行了就返回0。


7. login shell 与 non-login shell

这两个概念比较重要,涉及到是否取用配置的参数问题。以下引用自鸟哥网站的原话。http://vbird.dic.ksu.edu.tw/linux_basic/0320bash.php

在开始介绍 bash 的配置文件前,我们一定要先知道的就是 login shell 与 non-login shell! 重点在于有没有登陆 (login) 啦!

  • login shell:取得 bash 时需要完整的登陆流程的,就称为 login shell。举例来说,你要由 tty1 ~ tty6 登陆,需要输入用户的账号与密码,此时取得的 bash 就称为『 login shell 』啰;

  • non-login shell:取得 bash 接口的方法不需要重复登陆的举动,举例来说,(1)你以 X window 登陆 Linux 后, 再以 X 的图形化接口启动终端机,此时那个终端接口并没有需要再次的输入账号与密码,那个 bash 的环境就称为 non-login shell了。(2)你在原本的 bash 环境下再次下达 bash 这个命令,同样的也没有输入账号密码, 那第二个 bash (子程序) 也是 non-login shell 。

为什么要介绍 login, non-login shell 呢?这是因为这两个取得 bash 的情况中,读取的配置文件数据并不一样所致。 由于我们需要登陆系统,所以先谈谈 login shell 会读取哪些配置文件?一般来说,login shell 其实只会读取这两个配置文件:

  1. /etc/profile:这是系统整体的配置,你最好不要修改这个文件;
  2. ~/.bash_profile 或 ~/.bash_login 或 ~/.profile:属于使用者个人配置,你要改自己的数据,就写入这里!
所以平时直接bash XXX都是non-login shell,但是在bash后面加上--login,就可以以login shell登录:bash --login XXXX.sh

non-login shell仅仅会读取~/.bashrc,注意~/.bash_profile也会读取~/.bashrc




8. source和.

不需要重新登录,用两个命令作用于/etc/profile 和~/.bash_profile,将文件中的环境变量更新。 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值