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