将当前位置更改为主目录的最快方法是什么?

时间:2018-09-04 04:41:09

标签: linux bash directory

我正在使用Linux。我目前正在尝试将当前路径位置设置为我的主目录。任何人都知道我需要使用什么命令?

2 个答案:

答案 0 :(得分:4)

主目录具有两种不同的含义,通常是相同的。环境变量HOME的值(请参见environ(7)),以及与密码相关的API(例如getpwuid_r(3))在您当前用户ID上给出的字段pw_dir(由{{3}获取) }。

登录时,将HOME环境变量设置为pw_dir,并更改了有效和实际用户ID。

要将getuid(2)更改为HOME,请在getenv("HOME")的结果上使用working directory。请注意,工作目录与您的chdir(2)(可能会提到.无关;但这可能是一个安全问题),并且每个进程(包括您的shell)都有自己的工作目录(另请参见PATH variablecredentials(7)fork(2)execve(2)path_resolution(7))。

要更改主目录(这是非常不寻常的要求),可以使用root权限仔细编辑/etc/passwd文件(请参阅glob(7)),然后重新启动计算机(或至少重新启动一些登录shell) )。


bash cd passwd(5)就是这样做的(通过chdir系统调用更改了shell进程的工作目录)。而且,当不带参数使用它时,您会将工作目录更改为通过缓存getenv("HOME"的结果而获得的主目录。

如果在某些C程序中性能如此重要,则可以缓存(保留一些全局变量,初始化一次)getenv("HOME")的结果,并在其上使用chdir

如果您的问题仅与使用bash shell有关,只需键入:

 cd

,并且这应该(除非cd被严重别名或重新定义为某些功能)将Shell的工作目录更改为您的主目录。最多最多需要几毫秒(因此应该足够快)完成(我不容易想到一种可靠地测量内置cd shell的速度的方法;您可以尝试time bash -c 'cd; pwd'time bash -c 'cd; times',但它的功能远远不止cd,并且在台式机上最多可以显示几毫秒。

PS。在您的问题中使用“最快速的方式”和“当前路径位置”尚不清楚且令人困惑。我强烈邀请您 builtin您的问题,以改善其措辞并激发其动机并提供更多背景信息。

答案 1 :(得分:0)

我当前正在尝试将当前路径位置设置为我的主目录。 ?您可以使用EXPORT PATH

例如,在命令提示符下运行以下命令

export PATH=$PATH:$HOME/user

此更改仅在当前会话中发生,以使其永久添加到.bashrc文件中。