我改变了我的“HOME”变量,现在找不到“~/.bash_profile”来改回来

Mat*_*att 15 mac bash environment-variables

我在 Mac 上弄乱了环境变量,试图学习如何使用它们,然后我使用了命令nano ~/.bash_profile,然后在其中添加了该行HOME=/Users/MyCompName/Desktop来更新我的 home 变量。

此更改有效,当我printenv用来查看所有环境变量时可以看到,但是当我改HOME回去时,我似乎~/.bash_profile再也找不到了。它去了哪里?

Kam*_*ski 32

它在同一个地方。

在更改~扩展到类似 之前/Users/YourUserName,shell 会在.bash_profile那里找到您。文件获取源后~扩展到另一个路径,因此~/.bash_profile不再指向相关文件。这是因为在这种情况下~意味着$HOME

如果您知道实际主目录的完整路径,则可以使用它代替~. 在 Mac 中,它可能看起来像这样:

nano /Users/YourUserName/.bash_profile
Run Code Online (Sandbox Code Playgroud)

或者让您的 Bash 在用户数据库中查找您的主目录,而不仅仅是查看$HOME. 这不需要你记住任何东西:

nano ~YourUserName/.bash_profile
Run Code Online (Sandbox Code Playgroud)

HOME不更改实际主目录的情况下修改变量并不是最好的主意。更改任何用户的主目录是一项管理任务,通常普通用户不能这样做。

  • @Matt `.bash_profile` 具有 Bash 脚本的形式。您可以运行脚本或获取它。运行意味着创建一个子shell并在那里逐行执行脚本。采购意味着在 *current* shell 中执行脚本。一些旨在影响当前 shell 的任务不能在子 shell 中执行;更改当前 shell 的变量就是其中之一。这就是为什么某些文件是来源的,而不是在子 shell 中执行的原因。要手动获取文件,请使用 `. file`(`.` 由 POSIX 指定)或 `source file`(`source` 是少数 shell 能够理解的非 POSIX 扩展名)。 (6认同)
  • @Matt 看到这个:[执行 Bash 脚本与采购它有什么区别?](https://superuser.com/q/176783/432690) (4认同)
  • 如果你(马特)不知道你的主目录曾经在哪里,你可以使用 `nano ~YourUserName/.bash_profile` 代替。这将在用户数据库中查找您的主目录,而不仅仅是查看 $HOME。 (2认同)