一。简单介绍
shell是一个命令行解释器,那么用户想要以不同的方式与Linux内核交互,就可以采用不同的shell。
linux系统有着许多的shell程序实例,常见的有:sh,bash,csh,tcsh,ksh。其中Bash 是大多数Linux 系统默认的 Shell。
shell编写文件名后缀.sh,php编写文件名后缀就是.php。
有时候你在终端输入的命令不能支持并执行,很大原因是当前shell环境不支持这个命令,那么可以用echo $0或echo $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
可参考:
注意: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] 向后跳转到下一个字的第一个字符