外部命令
外部命令,有时候也被称为文件系统命令,是存在于bash shell之外的程序。它们并不是shell程序的一部分。外部命令程序通常位于/bin、/usr/bin、/sbin或/usr/sbin中。当外部命令执行时,会创建出一个子进程。这种操作被称为衍生。
内建命令
内建命令和外部命令的区别在于前者不需要使用子进程来执行。它们已经和shell编译成了一体,作为shell工具的组成部分存在。不需要借助外部程序文件来运行。因为既不需要通过衍生出子进程来执行,也不需要打开程序文件,内建命令的执行速度要更快,效率也更高。
一个有用的内建命令是 history 命令。bash shell会跟踪你用过的命令。你可以唤回这些命令并重新使用。
当输入 !! 时,bash首先会显示出从shell的历史记录中唤回的命令。然后执行该命令。
全局环境变量
要查看全局变量,可以使用 env 或 printenv 命令。在 echo 命令中,在变量名前加上 $ 可不仅仅是要显示变量当前的值。它能够让变量作为命令行参数。
局部环境变量
局部环境变量只能在定义它们的进程中可见。
set 命令会显示为某个特定进程设置的所有环境变量,包括局部变量、全局变量以及用户定义变量。
设置全局环境变量
在设定全局环境变量的进程所创建的子进程中,该变量都是可见的。创建全局环境变量的方法是先创建一个局部环境变量,然后再把它导出到全局环境中。这个过程通过 export 命令来完成,变量名前面不需要加 $。
/etc/passwd文件将用户的登录名匹配到对应的UID值Linux为系统账户预留了500以下的UID值。有些服务甚至要用特定的UID才能正常工作。为普通用户创建账户时,大多数Linux系统会从500开始,将第一个可用UID分配给这个账户(并非所有的Linux发行版都是这样)。
文件权限符解释
drwxr-xr-x 2 root root 4096 7月 18 16:26 ./
- 代表文件
d 代表目录
l 代表链接
c 代表字符型设备
b 代表块设备
n 代表网络设备之后有3组三字符的编码。每一组定义了3种访问权限:
r 代表对象是可读的
w 代表对象是可写的
x 代表对象是可执行的
若没有某种权限,在该权限位会出现单破折线。这3组权限分别对应对象的3个安全级别:
对象的属主
对象的属组
系统其他用户
umask 命令用来设置所创建文件和目录的默认权限。
chmod 命令用来改变文件和目录的安全性设置。
u 代表用户
g 代表组
o 代表其他
a 代表上述所有
X :如果对象是目录或者它已有执行权限,赋予执行权限。
s :运行时重新设置UID或GID。
t :保留文件或目录。
u :将权限设置为跟属主一样。
g :将权限设置为跟属组一样。
o :将权限设置为跟其他用户一样。