- 1.重启或者关机
- 2.查看本机的IP地址
- 3.查看内存磁盘CPU
- 4.查看服务是否是开机自动启动
- 5.Linux文件系统
- 6.配置机器的DNS服务器
- 7.防火墙
- 8.init命令
- 9.history命令
- 10.tcp/ip命令
- 11.任务调度命令crontab
- 12.Linux进程管理
- 13.作业管理
- 14.用w查看有哪些用户登陆
- 15.tar命令
- 16.linux下进程和线程
- 17.重定向命令
- 18.more命令
- 19.搜索命令
- 20.修改环境变量命令
- 21.alias用法
- 22.在文件夹下面获得root权限
- 23.挂载磁盘或者ISO文件
- 24.创建软链接
- 25.端口转发
- 26.linux命令并发执行
- 27.linux防止恶意ssh登录脚本
- 28.定制登录motd图案
- 29.如何挂载硬盘
- 30.查看linux内核版本
- 31.修改主机名
- 32.测网速
- 33.ubuntu下交换键位
- 34.linux下网络配置
- 35.无法获得锁 /var/lib/dpkg/lock
- 36.ubuntu下gedit闪退,遇到问题:ERROR:../../gi/pygi-argument.c:1583:_pygi_argument_to_object: code should not be reached 已放弃 (核心已转储)
- 37.ubuntu更换源
- 38.ubuntu右上角时间不显示
- 39.mac下制作ubuntu启动盘
- 40.Ubuntu在命令行下将默认语言改为英语
- 41.linux用户设置免密root
- 42.ubuntu14.04安装了im-switch后系统设置中不见了语言支持
- 43.删除ibus之后导致系统设置进不了
- 44.ubuntu16.04固定ip
- 45./etc/profile、/etc/bashrc、/.bash_profile、/.bashrc的区别
- 46.Ubuntu bash的几个初始化文件
- #
1.重启或者关机#
1 | shutdown -h now #立刻进行关机 |
2.查看本机的IP地址#
1 | ifconfig -a |
ubuntu修改IP地址和网关
3.查看内存磁盘CPU#
查看内存#
1 | free -m |
查看内存及cpu使用情况的命令
1 | top |
也可以安装htop工具,这样更直观,安装命令如下
1 | sudo apt-get install htop |
安装完后,直接输入命令:htop,就可以看到内存或cpu的使用情况了。
查看磁盘容量#
查看磁盘使用情况
1 | df -hT |
查看linux系统分区具体情况
1 | fdisk -l |
查看磁盘iotop#
1 | sudo iotop -oPa<!--more--> |
清理buffer/caches#
1 | echo 3 > /proc/sys/vm/drop_caches |
查看机器物理CPU个数#
1 | cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l |
查看单个物理CPU中core的个数(即核数)#
1 | cat /proc/cpuinfo| grep "cpu cores"| uniq |
查看逻辑CPU的个数#
1 | cat /proc/cpuinfo| grep "processor"| wc -l |
排查cpu 100%#
参考:线上服务 CPU 100%?一键定位 so easy!
4.查看服务是否是开机自动启动#
1 | systemctl is-enabled nginx |
其他相关命令
1 | systemctl enable *.service #开机运行服务 |
配置开机自启动#
1 | # 添加开机自启动服务 |
参考
1 | https://docs.cloudera.com/documentation/enterprise/5-15-x/topics/admin_ha_hiveserver2.html |
5.Linux文件系统#
常用目录结构#
1 | /bin 存放常用命令 |
Linux账号与用户组#
用户识别:UID和GID
/etc/passwd记录这用户的账号
1 | cat /etc/passwd #查看用户 |
/etc/shadow保存的是用户的密码
关于用户组:有效与初始用户组、groups、newgrp
1 | cat /etc/group #输出用户组名称和支持的账号名称(有多个) |
每个用户可以拥有多个支持的用户组,在/etc/passwd里的GID就是”初始用户组(initial group)“,当用户登录系统,立刻就拥有这个用户组的相关权限
1 | groups #输出当前登录的用户所在的群组,可以有多个,且第一个是有效用户组 |
新增与删除用户
-u:接UID -g:接初始用户组 -G:接这个账号还可以支持的用户组 -Mm:强制不要(要)建立home -c:说明内容
-d:制定某个目录成为home目录 -r:建立一个系统账号,这个账号的UID会有限制 -s:后面接一个shell,默认是/bin/bash
1 | useradd [-u UID] [-g initial_group] [-G other_group] [-Mm] [-c 说明栏] [-d home] [-s shell] username |
passwd命令
设置密码命令
1 | sudo passwd common #使用root帮其他用户修改密码 |
usermod命令
进行账号相关数据的修改
userdel命令
删除用户
1 | userdel -r common #连同用户的home目录一起删除 |
finger命令/id命令/w命令/who命令
查看用户的信息
新增与删除用户组
groupadd命令
1 | groupadd [-g GID] [-r] #没有参数建立用户组,-g后面接特定的GID,-r建立系统用户组 |
groupmod命令
1 | groupmod [-g GID] [-n group_name] group #把group用户组的名字改成group_name,id改成GID |
groupdel命令
1 | groupdel [groupname] #删除用户组 |
gpasswd命令
1 | gpasswd [-ad] user groupname #在group中加入/删除user |
newgrp命令
1 | newgrp common #把当前用户的有效用户组修改成common |
修改linux文件夹权限#
如果要将drwxrwxrwx的目录改成drwxrwxr-x
1 | chmod 755 -R ./collections/ |
6.配置机器的DNS服务器#
配置文件地址为 /etc/resolv.conf
1 | vim /etc/resolv.conf |
7.防火墙#
1.查询防火墙状态#
1 | sudo service ufw status # 防火墙服务进程 |
输出
1 | 状态: 激活 |
2.关闭防火墙#
1 | sudo service ufw stop |
3.开启防火墙#
运行以下两条命令后,开启了防火墙,并在系统启动时自动开启
1 | sudo ufw enable # 启动防火墙服务进程后,启用防火墙 |
4.配置防火墙#
1 | #开启和禁用 |
ufw日志在/var/log/ufw.log,可以看到端口被扫描的信息
1 | Jun 29 10:10:10 xxxxxxx kernel: [3276816.402874] [UFW BLOCK] IN=enp3s0 OUT= MAC=xxxxxxxxxxx SRC=xx.xx.xx.xx DST=xx.xx.xx.xx LEN=228 TOS=0x00 PREC=0x00 TTL=128 ID=1579 PROTO=UDP SPT=61418 DPT=18323 LEN=208 |
参数含义
1 | TOS, for Type of service, |
8.init命令#
9.history命令#
显示最近使用的命令
history history 5
!编号 执行编号480的命令
10.tcp/ip命令#
数据包:帧头 ip头 tcp头 app头 数据 帧尾
ping命令#
1 | ping www.baidu.com #退出shift+ctrl+c |
ping命令一般用于检测网络通与不通,也叫时延,其值越大,速度越慢PING(PacketInternetGrope),因特网包探索器,用于测试网络连接量的程序。
ping发送一个ICMP回声请求消息给目的地并报告是否收到所希望的ICMP回声应答。它是用来检查网络是否通畅或者网络连接速度的命令。
原理:网络上的机器都有唯一确定的IP地址,我们给目标IP地址发送一个数据包,对方就要返回一个同样大小的数据包,根据返回的数据包我们可以确定目标主机的存在,可以初步判断目标主机的操作系统等。
traceroute命令#
追踪路由命令,查看与连接的ip地址之间经历了多少个路由
1 | traceroute www.baidu.com/ip |
netstat命令**
**#
显示网络统计信息
1 | netstat -an | more |
显示进程号
1 | netstat -anp | more #查看的时候ip地址的foreign address,进程号是最前面的那个 |
查看端口的TCP UDP的连接
1 | sudo netstat -antup |
查看已经连接的服务端口(ESTABLISHED)**
**
1 | netstat -a |
查看所有的服务端口(LISTEN,ESTABLISHED)**
**
1 | netstat -ap |
查看8080端口,则可以结合grep命令:
1 | netstat -ap | grep 8080 |
从大到小排序查看进程的tcp连接数
1 | sudo netstat -antp | awk '{print $(7)}' | sort | uniq -c | sort -rn |
lsof命令#
查看8888端口,则在终端中输入:**
**
1 | lsof -i :8888 |
查看用户占用的连接
1 | sudo lsof -u xxxx | wc -l |
route命令#
查看本机路由表
mtr命令#
查看网络链路连通性,需要sudo
1 | sudo mtr www.baidu.com |
dig命令#
查看DNS解析是否正常,查看ANSWER SECTION,如果没有则不正常
1 | dig baidu.com |
wget命令#
检测tcp和udp端口#
1 | nc -uz 127.0.0.1 8080 #udp |
11.任务调度命令crontab#
4.
如果crontab -e进入的是nano,使用下面命令进行切换
1 | export EDITOR=vim |
12.Linux进程管理#
子程序与父程序#
PID是进程的ID,PPID是其父进程的ID
登录bash之后,就是获取了一个名为bash的PID,在这个环境上所执行的其他命令,就是其子程序
1 | common@common-Aspire-4750:~$ ps -l |
ps -aux命令#
参数:-A:所有的进程均显示出来,与-e具有同样的作用
** -a:**与终端无关的所有进程
** -u:**有效用户的相关进程
** x:**通常与a参数一起使用,可列出较完整的信息
输出格式:-l:较长、较详细地显示该PID的信息
** j:作业的格式,带有PID、PPID等信息**
** -f:更为完整的输出,进程树格式显示**
1 | ps -l #将当前属于自己这次登录的PID与相关信息显示出来,以长格式显示 |
如果某个进程的CMD后面还有
造成僵尸进程的原因是,该进程应该已执行完毕,或者是因故应该终止了,但是该进程的父进程却无法完整地结束该进程,而造成那个进程一直存在于内存中
top命令#
top命令可以持续检测整个系统的进程工作状态
1 | top [-d] [-bnp] |
参数:-d,间隔多少秒输出
-b,将批处理的结果输出到文件
-n,与-b搭配,需要进行几次top的输出结果
-p,指定某些个PID来进行观察
1 | top -d 2 #每隔两秒输出 |
top主要分为两个画面,上面的画面为整个系统的资源使用状态,有6行:
第一行:显示系统时间,上线人数,整体负载(分别表示1、5、10分钟的平均负载,一般不会超过1)
第二行:显示当前观察的进程数量,注意最后的僵尸进程数量
第三行:显示CPU的总负载,id的数值接近于100,表示系统资源使用的很少
第四、五行:表示当前物理内存与虚拟内存(Men和Swap)的使用情况
第六行:输入命令显示状态的地方
pstree命令#
pstree查看进程的关联性
参数:-A:各进程树之间以ASCII字符来连接
** -p:同时列出每个进程PID**
** -u:同时列出每个进程的所属账号名称**
1 | pstree -Aup #列出当前系统上所有进程树的关联性,并显示PID和用户 |
centos清理僵尸进程#
1 | ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]' |
13.作业管理#
**&**命令#
**& **可以直接将命令放到后台执行
输入命令后,在该命令的最后加上一个&,表示将该命令放到后台,此时会返回一个“作业号”[1],还有一个PID。
1 | common@common-Aspire-4750:~/下载$ tar -cvzf temp.tar.gz temp/ & |
在后台中执行的命令,如果有stdout和stderr的时候,它的数据依然是输出到屏幕上的,所以要使用数据流重导向,将输出传至某个文件中
1 | tar -cvzf temp.tar.gz temp/ >> a.txt & |
Ctrl-z#
**Ctrl-z **可以将“当前”作业放到后台“暂停”
1 | common@common-Aspire-4750:~/下载$ vi a.txt |
jobs命令#
**jobs **观察当前后台作业状态
-l:除了列出作业号之外,同时列出PID
-r:仅列出正在后台运行(run)的作业
-s:仅列出正在后台暂停(stop)的作业
1 | common@common-Aspire-4750:~/下载$ jobs -l |
fg命令#
fg 将后台作业拿到前台处理
1 | common@common-Aspire-4750:~/下载$ fg %2 # %后面跟的是作业号,默认取出+的作业 |
bg命令#
** bg** 让作业在后台运行
1 | common@common-Aspire-4750:~/下载$ bg %2 |
管理后台作业命令#
kill命令
参数
1 | HUP 1 终端断线 |
-l:列出当前kill能够使用的信号(signal),signal表示指示,使用man 7 signal可以知道
-1:重新读取一次参数的设置文件,(类似reload)
-2:表示与由键盘输入ctrl-c同样的动作
-9:立刻强制删除一个作业
1 | kill -9 进程号 #强力杀死 |
-15:以正常的程序方式终止一项作业
killall命令
强制终止所有以httpd启动的进程
1 | killall -9 httpd |
xkill命令
杀死一个窗口程序,在QQ后台无法呼出的时候使用
14.用w查看有哪些用户登陆#
1 | USER TTY FROM |
切换控制台#
ctrl+alt+F1-F7可以切换到7个不同的控制台,F1-F6是字符界面,F7是图形化的界面。
15.tar命令#
tar命令
-c:创建压缩文件
-x:解开压缩文件
-t:查看tarfile里的文件,(c/x/t只能有一个,不能同时存在)
1 | tar -cvf a.tar home/common/下载/temp/ #把文件夹打包,名字是a.tar,不压缩 |
-j:是否需要用bzip2压缩
-v:在压缩的过程中显示文件
-f:使用文件名,在f之后要立即接文件名,不要再加参数
-p:使用源文件的原来属性
-P:可以使用绝对路径来压缩
-N:比后面接的日期(yyyy/mm/dd)还要新的才会被打包进新建的文件中
–exclude FILE:在压缩的过程中,不要将FILE打包
1 | 2.3G Sep 16 15:12 test1.log |
16.linux下进程和线程#
进程:就是正在执行的程序
线程:(1)轻量级的进程
(2)进程有独立的地址空间,线程没有
(3)线程不能独立存储,它是由线程创建的,(fork) thread
(4)线程耗费CPU和内存小于进程
17. 进入mysql的bin目录下,使用./mysqldump
17.重定向命令#
1 | ls -l > a.txt #列表中的内容写入文件a.txt中(覆盖写) |
18.more命令#
more命令 显示文件内容,带分页 空格往下一页翻,pageup往上一页翻
less命令 显示文件内容带分页
grep命令 在文本中查询内容
管道 比如 ls -l /etc/ | more 把ls命令返回的目录结果给more命令,使其分页显示
19.搜索命令#
which命令,寻找“执行文件”
参数:-a,将所有可找到的命令均列出,而不仅仅列出第一个找到的命令名称
1 | common@common-Aspire-4750:~$ which passwd |
whereis命令,寻找特定文件
参数:-b:只找到二进制文件
-m:只找在帮助文件manual路径下的文件
-s:只找源文件
-u:没有帮助文件的文件
1 | common@common-Aspire-4750:~$ whereis passwd #任何和passwd有关的文件名都会被列出来 |
locate命令,直接在后面输入“文件的部分名称”,就能够得到结果
locate查找的速度很快,是根据已经有的数据库/var/lib/slocate/里面的数据所搜索的
1 | common@common-Aspire-4750:~$ locate passwd | more |
find命令,find [PATH] [option] [action]
1 | find / -name a.java #从根目录开始以名字来查找 |
20.修改环境变量命令#
21.alias用法#
1 | alias llh='ls -l /home' #ls -l /home取别名 |
22.在文件夹下面获得root权限#
1 | sudo nautilus |
23.挂载磁盘或者ISO文件#
1 | mount /mnt/cdrom 光驱的默认挂载路径,也可以是其他路径 |
ubuntu下安装ISO的Latex
在linux下默认的ISO挂载点位于”/media”目录,下面是挂载一个ISO文件的方法:
sudo mkdir /media/cdimage #建立一个文件夹作为ISO挂载点
sudo mount -o loop myfile.iso /media/cdimage #挂载ISO文件,使用参数 -o loop
使用你想挂载的iso文件代替myfile.iso。
挂载一个镜像文件使之能被写入,使用下面的命令:
sudo mkdir /media/cdimage
sudo mount -o rw,loop myfile.iso /media/cdimage
然后
perl install-tl -gui
卸载镜像文件:
sudo umount /media/cdimage
rmdir /media/cdimage
安装的路径在usr/local/下
24.创建软链接#
Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产生硬链接。
【硬连接】
硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。
【软连接】
另外一种连接称之为符号连接(Symbolic Link),也叫软连接。软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。
1 | sudo ln -s /XXX/bin /usr/bin |
25.端口转发#
1 | ssh -L8090:remote_ip:remote_port remote_host |
26.linux命令并发执行#
先将要执行的命令打印到commend.txt文件中,然后用每50行切一个文件,用10个并发来执行这些文件
1 | rm ./commend.txt* |
27.linux防止恶意ssh登录脚本#
参考: https://blog.51cto.com/732233048/1694987
1 | #!/bin/bash |
crontab -e
1 | 30 5 * * * bash /root/script/denyRootSsh.sh > /dev/null 2>&1 & |
28.定制登录motd图案#
1 | http://www.kammerl.de/ascii/AsciiSignature.php |
在/etc/profile中添加
1 | #Login Info |
login_bash_ok.sh内容
1 | # * Variables |
29.如何挂载硬盘#
1 | https://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/add-instance-store-volumes.html |
重启自动挂卷
1 | https://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/ebs-using-volumes.html#ebs-mount-after-reboot |
30.查看linux内核版本#
1 | uname -a |
查看可以安装的linux内核
1 | apt-cache search linux-image |
安装内核
1 | sudo apt-get install linux-image-4.9.0-0.bpo.12-amd64 |
31.修改主机名#
1 | vim /etc/hostname |
32.测网速#
1 | iperf3 |
33.ubuntu下交换键位#
1 | setxkbmap -option altwin:swap_lalt_lwin |
参考:轻松交换键位
34.linux下网络配置#
35.无法获得锁 /var/lib/dpkg/lock#
解决办法如下:
- 终端输入 ps -aux 直接sudo kill
PID - 解决:
其实这是因为有另外一个程序在运行,导致锁不可用。原因可能是上次运行更新或安装没有正常完成。解决办法是杀死此进程
1 | sudo rm /var/cache/apt/archives/lock |
然后还要记得更新软件信息
36.ubuntu下gedit闪退,遇到问题:ERROR:../../gi/pygi-argument.c:1583:_pygi_argument_to_object: code should not be reached 已放弃 (核心已转储)#
解决方法:编辑->首选项关闭->插件->取消”多文件编辑”
37.ubuntu更换源#
建议使用ustc.edu的源,其他例如清华的,阿里的连sublime都没有
38.ubuntu右上角时间不显示#
重启unity,命令
1 | sudo killall unity-panel-service |
39.mac下制作ubuntu启动盘#
参考:2019-06-27 Mac OS制作Ubuntu的U盘启动盘
40.Ubuntu在命令行下将默认语言改为英语#
41.linux用户设置免密root#
1 | sudo vim /etc/sudoers |
在%sudo ALL=(ALL:ALL) ALL的下面添加如下命令,注意必须在该位置添加
1 | your_username ALL=(ALL) NOPASSWD:ALL |
42.ubuntu14.04安装了im-switch后系统设置中不见了语言支持#
1 | sudo apt-get install language-selector-gnome |
43.删除ibus之后导致系统设置进不了#
1 | sudo apt-get instal ubuntu-desktop |
快捷键调出sogou拼音,默认为”ctrl+,”
44.ubuntu16.04固定ip#
45./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信息,当登录时以及每次打开新的shell时,该文件被读取**~/.bash_logout:**当每次退出系统(退出bash shell)时,执行该文件.
46.Ubuntu bash的几个初始化文件
#
(1)/etc/profile
全局(公有)配置,不管是哪个用户,登录时都会读取该文件。
(2)/ect/bashrc
Ubuntu没有此文件,与之对应的是/ect/bash.bashrc;它也是全局(公有)的 ;bash执行时,不管是何种方式,都会读取此文件。
(3)~/.profile
若bash是以login方式执行时,读取/.bash_profile,若它不存在,则读取/.bash_login,若前两者不存在,读取~/.profile。
另外,图形模式登录时,此文件将被读取,即使存在/.bash_profile和/.bash_login。
(4)~/.bash_login
若bash是以login方式执行时,读取/.bash_profile,若它不存在,则读取/.bash_login,若前两者不存在,读取~/.profile。
(5)~/.bash_profile
Unbutu默认没有此文件,可新建。
只有bash是以login形式执行时,才会读取此文件。通常该配置文件还会配置成去读取~/.bashrc。
(6)~/.bashrc
当bash是以non-login形式执行时,读取此文件。若是以login形式执行,则不会读取此文件。
(7)~/.bash_logout
注销时,且是longin形式,此文件才会读取。也就是说,在文本模式注销时,此文件会被读取,图形模式注销时,此文件不会被读取。
下面是在本机的几个例子:
- 图形模式登录时,顺序读取:**/etc/profile和~/.profile**
- 图形模式登录后,打开终端时,顺序读取:**/etc/bash.bashrc和~/.bashrc**
- 文本模式登录时,顺序读取:**/etc/bash.bashrc,/etc/profile和~/.bash_profile**
- 从其它用户su到该用户,则分两种情况:
(1)如果带-l参数(或-参数,–login参数),如:su -l username,则bash是lonin的,它将顺序读取以下配置文件:/etc/bash.bashrc,/etc/profile和/.bash_profile。/.bashrc
(2)如果没有带-l参数,则bash是non-login的,它将顺序读取:/etc/bash.bashrc和 - 注销时,或退出su登录的用户,如果是longin方式,那么bash会读取:~/.bash_logout
- 执行自定义的shell文件时,若使用“bash -l
a.sh”的方式,则bash会读取行:/etc/profile和~/.bash_profile,若使用其它方式,如:bash a.sh,
./a.sh,sh a.sh(这个不属于bash shell),则不会读取上面的任何文件。 - 上面的例子凡是读取到
/.bash_profile的,若该文件不存在,则读取/.bash_login,若前两者不存在,读取~/.profile。
#
47.bashrc与profile的区别
要搞清bashrc与profile的区别,首先要弄明白什么是交互式shell和非交互式shell,什么是login shell 和non-login shell。
交互式模式就是shell等待你的输入,并且执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉
的:登录、执行一些命令、签退。当你签退后,shell也终止了。
shell也可以运行在另外一种模式:非交互式模式。在这种模式下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件
的结尾,shell也就终止了。
bashrc与profile都用于保存用户的环境信息,bashrc用于交互式non-loginshell,而profile用于交互式login shell。系统中存在许多bashrc和profile文件,下面逐一介绍:
/etc/pro此文件为系统的每个用户设置环境信息,当第一个用户登录时,该文件被执行.
并从/etc/profile.d目录的配置文件中搜集shell的设置.
/etc/bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取。有些linux版本中的/etc目录下已经没有了bashrc文件。
~/. pro每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,它设置一些环境变量,然后执行用户的.bashrc文件.
~/.bashrc:该文件包含专用于某个用户的bash shell的bash信息,当该用户登录时以及每次打开新的shell时,该文件被读取.
另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是”父子”关系.
某网友总结如下:
/etc/profile,/etc/bashrc 是系统全局环境变量设定 /.profile,/.bashrc用户家目录下的私有环境变量设定
当登入系统时候获得一个shell进程时,其读取环境设定档有三步
1首先读入的是全局环境变量设定档/etc/profile,然后根据其内容读取额外的设定的文档,如
/etc/profile.d和/etc/inputrc
2然后根据不同使用者帐号,去其家目录读取/.bash_profile,如果这读取不了就读取/.bash_login,这个也读取不了才会读取 /.profile,这三个文档设定基本上是一样的,读取有优先关系 /.bashrc
3然后在根据用户帐号读取
至于/.profile与/.bashrc的不区别
都具有个性化定制功能 /.profile可以设定本用户专有的路径,环境变量,等,它只能登入的时候执行一次 /.bashrc也是某用户专有设定文档,可以设定路径,命令别名,每次shell script的执行都会使用它一次
参考:http://www.hx95.com/Article/Tech/201207/58094.html