【问题标题】:What is the quickest way to change your current location to your home directory? [closed]将当前位置更改为主目录的最快方法是什么? [关闭]
【发布时间】:2019-02-09 01:13:23
【问题描述】:

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

【问题讨论】:

  • 你当前的路径是什么?
  • Stack Overflow 用于编程问题,而不是关于使用或配置 Linux 及其应用程序的问题。 Super UserUnix & Linux 将是解决此类问题的更好地方。
  • 你的问题不是很清楚,但我想你可以输入cd?默认目录是您的主目录。
  • 也是这个问题的重复:unix.stackexchange.com/questions/259791/…
  • 嗯,只需在提示符处输入'cd'并按[Enter]??

标签: linux bash directory


【解决方案1】:

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

在登录时,HOME 环境变量被设置为pw_dir,并且有效和真实的用户 ID 被更改。

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

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


bash cd builtin 正在这样做(使用 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。在您的问题中使用“最快方式”和“当前路径位置”不清楚且令人困惑。我强烈邀请您edit您的问题,以改进其措辞并激发它并提供更多上下文。

【讨论】:

    【解决方案2】:

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

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

    export PATH=$PATH:$HOME/user
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-11
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      • 2014-01-21
      • 2020-01-17
      • 1970-01-01
      • 2011-07-24
      相关资源
      最近更新 更多