shell脚本介绍及其环境变量配置

一。简单介绍

shell是一个命令行解释器,那么用户想要以不同的方式与Linux内核交互,就可以采用不同的shell。

linux系统有着许多的shell程序实例,常见的有:sh,bash,csh,tcsh,ksh。其中Bash 是大多数Linux 系统默认的 Shell。

shell编写文件名后缀.sh,php编写文件名后缀就是.php。

有时候你在终端输入的命令不能支持并执行,很大原因是当前shell环境不支持这个命令,那么可以用echo $0echo $shell查你当前在哪个shell环境。$0会返回你当前运行的进程的名称。

二。环境变量配置,用户个性化配置

1.环境变量分类

按生命周期分:

永久的:在环境变量脚本文件中配置,用户每次登录时会自动执行这些脚本,相当于永久生效。

临时的:用户利用export(bash)或则setenv(tcsh)命令,在当前终端下声明环境变量,关闭Shell终端失效。

按作用域分:

系统环境变量:公共的,对全部的用户都生效。

用户环境变量:用户私有的、自定义的个性化设置,只对该用户生效。

2.Profile 类文件和bashrc类文件的区别

Profile 类的文件:设定环境变量,在用户登录时运行一些命令或脚本

bashrc 类的文件:设定本地变量,定义命令别名

3.bash程序的配置文件有:/etc/profile, /etc/bashrc, ~/.bash_profile, ~/.bashrc

全局配置(公共的,对全部用户都生效):/etc/profile, /etc/bashrc

个人配置(私有的用户个性化配置):~/.bash_profile,~/.bashrc

/etc/profile: 当用户第一次登录时,该文件被执行,并从/etc/profile.d目录的配置文件中搜集shell的设置。

 /etc/bashrc:为每一个运行bash shell的用户执行此文件,当bash shell终端被打开时,该文件被读取。

~/.bash_profile:用户可以使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次。默认情况下设置的一些环境变量,是执行用户的.bashrc文件。

~/.bashrc:该文件专属设置你的bash shell 的bash信息,当登录时以及每次打开新的终端时,该文件被读取。

4.tcsh程序的配置文件有:

tcsh是csh的增强版,语法类似c语言。

全局配置文件:  /etc/csh.cshrc

个人配置文件: ~/.cshrc 或 ~/.tcshrc

可参考:

(44条消息) [csh]配置你的csh/tcsh_csh配置_元直数字电路验证的博客-CSDN博客icon-default.png?t=N6B9https://blog.csdn.net/gsjthxy/article/details/118404456?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168965016616782425117200%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=168965016616782425117200&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-22-118404456-null-null.142%5ev88%5ekoosearch_v1,239%5ev2%5einsert_chatgpt&utm_term=tcsh%E7%9A%84%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E6%9C%89%E5%93%AA%E4%BA%9B&spm=1018.2226.3001.4187

注意:tcsh中不能使用export来临时定义变量

而是使用set定义局部变量,setenv定义环境变量,局部变量只对本shell有效, 不能传递给子shell,但环境变量可传递给子shell, setenv类似于bash中export操作。

5.shell是如何读取这些配置文件的

 

注意:其中~/.bash_profile,~/.bash_login,~/.profile三个文件中往往系统中,往往只存在一个,在不同的发行版中不同;最后在~/.bashrc之后执行一下~/.bash_logout。

.Linux中的~/./分别代表什么

~表示主目录,也就是当前登录用户的用户目录。

比如:我登录用户是zhexqio,~ 代表的就是/home/zhexqio.

/是指根目录:就是所有目录最顶层的目录.

./表示当前目录,./ 一般需要和其他文件夹或者文件结合使用,指代当前目录下的东西.

..表示上级目录,../ 指代上级目录下的东西.

提问:linux系统终端输入某个命令前为什么要加./?

使用命令行执行某个程序的时候,Linux会到PATH环境变量的路径去搜索程序文件,但在默认情况下,Linux和Windows不同,Windows会搜索当前目录,而Linux不会搜索当前目录,所以在当前目录下的程序,而当前目录不再PATH环境变量中的话,就需要加上"./"来指定到当前目录下去查找应用程序了

. bash shell基本功能

1. 命令记忆功能

历史输入过的命令,会被记录下来,可以查找。也就是我们常用的history命令,命令记录在用户根目录的.bash_history里面

2.命令别名功能

比如登录服务器查看日志,经常要cd 一长串目录,我们可以设置一个别名。

alias clog=''cd /var/log/wd/com.sj.logs"。今后登录服务器就可以直接clog进入日志文件所在目录。这个前提条件是,别名功能全局生效,需要将这个命令写入~目录下面的.bashrc文件,然后source .bashrc文件或者退出重新登录

3. 通配符

比如我们要查找所有.jpg的文件,ls -al *.jpg,*就是通配符。通配符有如下几种:

*通配符匹配任意一个或多个字符

"?"通配符匹配一个任意字符

[list] 匹配list中任意单个字符

例如:[root@youxi1 ~]# ls file[123]

file1 file2 file3

4.指令下达和快速编辑

指令下达,按回车键就是下达,如果一行写不完,输入\回车换到下一行,继续输入。

指定快速编辑

Ctrl+p:执行上一次输入的命令;

Ctrl+r:搜索历史记录

Ctrl+c:取消本次输入命令

[Ctrl + a] 跳转至命令行首 Ahead of line

[Ctrl + e] 跳转至命令行尾 End of line

[Ctrl + f] 向前跳转一个字符 jump Forward one character

[Ctrl + b] 向后跳转一个字符 jump Backward one character

[Alt + f] 向前跳转到下一个字的第一个字符

[Alt + b] 向后跳转到下一个字的第一个字符

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值