Gee*_*eek 2 directory terminology home
在类 Unix 系统中 ahome directory
和之间有什么区别working directory
?
主目录是与系统用户帐户数据库中的用户名相关联的目录。它是由 返回的条目中的第 6 个字段getent passwd some-user
。
当您登录时,HOME
环境变量从该值初始化,应用程序使用该变量或查询用户数据库以了解您的主目录是什么。
该目录通常由相应的用户拥有和写入,通常是应用程序存储用户设置和用户存储其文件的位置。
在 shell 中,~
扩展到您的主目录和~user
user 的主目录user
。
内核不知道用户名或主目录是什么。主目录完全是一个用户空间概念。
另一方面,工作目录是每个进程的一个属性。它可以通过chdir(2)
系统调用(以及cd
shell 中的命令)进行更改,并使用getcwd()
或pwd
在 shell 中进行查询。当前工作目录是使用相对路径查找文件的基础。相对路径(如“foo/bar.txt”)相对于进程的当前工作目录。
工作目录在 fork 上继承并在执行命令时保留。例如,ls
列出其工作目录的内容,该目录与调用它的 shell 的工作目录相同。
当用户登录时,以他的名字运行的第一个进程的工作目录被设置为其主目录,因此,除非对其进行任何更改,否则在该登录会话下启动的每个进程都将主目录作为当前工作目录。
shell 不在主目录中启动,它们在执行时从当前目录所在的任何位置启动,尽管由终端仿真器本身启动的外壳由登录管理器启动的窗口管理器本身启动,但很可能在主目录中启动,因为有没有理由窗口管理器或终端模拟器会更改其工作目录。