linux虽然工作中一直有接触,但是一直缺乏系统了解,都是遇到问题,查资料,解决,过,下次遇到的时候往往又忘了,所以稍微整理一下.
文件颜色的含义
颜色 | 含义 |
---|---|
蓝色 | 目录 |
绿色 | 可执行文件 |
红色 | 压缩文件 |
浅蓝色 | 链接文件 |
白色 | 其他文件 |
链接文件
linux里分硬链接和符号链接.通过ln命令可以创造链接文件. 详细介绍参考这里
硬链接ln f1 f2
硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。
符号链接ln -s f1 f3
另外一种连接称之为符号连接(Symbolic Link),也叫软连接。软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。
设置全局变量
在linux下安装的软件,执行命令必须要到其bin或者sbin目录下才能执行,想要全局可以执行就要配置环境变量.以nginx为例
在/etc/profile里加上
#nginx
PATH=$PATH:/usr/local/nginx/sbin
这样就可以全局调用nginx的指令了
设置环境变量
设置环境变量有以下几种方式
shell
在shell中对$PATH进行修改,但是这种修改是暂时的,只在shell里有效
/etc/profile
该文件登录操作系统时,为每个用户设置环境信息,当用户第一次登录时,该文件被执行。也就是说这个文件对每个shell都有效,用于获取系统的环境信息。
/etc/bashrc:
为每一个运行bash shell的用户执行此文件,当bash shell被打开时,该文件被读取。也就是说,当用户shell执行了bash时,运行这个文件。
~/.bashrc
该文件存储的是专属于个人bash shell的信息,当登录时以及每次打开一个新的shell时,执行这个文件。在这个文件里可以自定义用户专属的个人信息。
在刚登录Linux时,首先启动 /etc/profile 文件,然后再启动用户目录下的 ~/.bash_profile、 ~/.bash_login或 /.profile文件中的其中一个,执行的顺序为:/.bash_profile、 ~/.bash_login、 ~/.profile。如果 ~/.bash_profile文件存在的话,一般还会执行 ~/.bashrc文件。
profile
什么是EUID
就是决定用户访问权限的
profile的内容解析
# /etc/profile
# System wide environment and startup programs, for login setup
# Functions and aliases go in /etc/bashrc
#系统环境和启动程序,为了登录安装
#功能和别名去 /etc/bashrc
# It's NOT a good idea to change this file unless you know what you
# are doing. It's much better to create a custom.sh shell script in
# /etc/profile.d/ to make custom changes to your environment, as this
# will prevent the need for merging in future updates.
#除非你知道你要做什么,不然改这个文件不是个好主意.
#在/etc/profile.d/下创建一个custom.sh的shell脚本来定制你的环境是更合适的做法,
#这样会避免以后更新需要合并内容
#判断路径在环境变量(PATH)里,第一个参数是路径,第二个参数是位置.
pathmunge () {
case ":${PATH}:" in
*:"$1":*) #如果路径在环境变量里
;; #什么也不做
*) #路径不在环境变量里
if [ "$2" = "after" ] ; then #如果第二个参数为after,则
PATH=$PATH:$1 #在环境变量后面追加路径
else #否则
PATH=$1:$PATH #在前面追加路径
fi
esac
}
if [ -x /usr/bin/id ]; then #如果文件/usr/bin/id存在且可执行
if [ -z "$EUID" ]; then #如果 EUID的长度为0
# ksh workaround
EUID=`id -u`
UID=`id -ru`
fi
USER="`id -un`"
LOGNAME=$USER
MAIL="/var/spool/mail/$USER"
fi
# Path manipulation
#路径控制
if [ "$EUID" = "0" ]; then #如果EUID等于0
pathmunge /sbin #把/sbin加到环境变量里
pathmunge /usr/sbin #把/usr/sbin加到环境变量里
pathmunge /usr/local/sbin #把/usr/local/sbin加到环境变量里
else #否则
pathmunge /usr/local/sbin after #把/usr/local/sbin追加到环境变量里
pathmunge /usr/sbin after #把/usr/sbin追加到环境变量里
pathmunge /sbin after #把/sbin追加到环境变量里
fi
HOSTNAME=`/bin/hostname 2>/dev/null`
HISTSIZE=1000 #HISTSIZE 定义了 history 命令输出的记录数,即输出.bash_history文件中的最后HISTSIZE行
if [ "$HISTCONTROL" = "ignorespace" ] ; then #如果HISTCONTROL值等于ignorespace
export HISTCONTROL=ignoreboth #设置环境变量HISTCONTROL为ignoreboth
else
export HISTCONTROL=ignoredups #设置环境变量HISTCONTROL为ignoredups
fi
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL #定义一系列环境变量
# By default, we want umask to get set. This sets it for login shell
# Current threshold for system reserved uid/gids is 200
# You could check uidgid reservation validity in
# /usr/share/doc/setup-*/uidgid file
#默认情况下,我们想要umask被设置.登录shell里会设置它
#系统保留的uid/gids的当前阈值是200
#你应该在/usr/share/doc/setup-*/uidgid文件里检测 uidgid 的保留效力
if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then #如果UID大于199同时group和user的名字相同
umask 002 #设umask值为002(目录775,文件664)
else
umask 022 #设umask值为022(目录755,文件644)
fi
for i in /etc/profile.d/*.sh ; do #遍历/etc/profile.d/的shell文件
if [ -r "$i" ]; then #如果文件可读
if [ "${-#*i}" != "$-" ]; then #如果文件的shell选项与当前的shell选项不相等
. "$i" #执行脚本
else
. "$i" >/dev/null 2>&1 #执行脚本不输出结果 (/dev/null 2>&1 "常用来避免shell命令或者程序等运行中有内容输出)
fi
fi
done
#java_path
JAVA_HOME=/usr/local/jdk1.8.0_112
CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOMR/bin:/usr/bin
#nginx
#PATH=$PATH:/usr/local/nginx/sbin
#maven
export M2_HOME=/usr/local/maven
PATH=$PATH:$M2_HOME/bin
export PATH JAVA_HOME CLASSPATH #使这几个环境变量生效
unset i #删除变量 i
unset -f pathmunge #删除函数 pathmunge