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

我在我的 Mac 上搞环境变量,试图学习如何使用它们,并使用命令 nano ~/.bash_profile 添加了一行 HOME=/Users/MyCompName/Desktop 来更新我的主目录变量。这个更改起作用了,可以通过使用 printenv 查看所有环境变量来查看,但是当我想要把 HOME 改回去时,我似乎找不到 ~/.bash_profile 了。它哪儿去了?

9基本上,~ 的意思是 $HOME - el.pescado - нет войне
6如果你重新定义了$HOME~也会被重新定义。 - el.pescado - нет войне
1个回答

它在同一个地方。

在更改之前,~ 扩展为类似于 /Users/YourUserName 的内容,shell 在那里找到你的 .bash_profile 文件。在文件被加载后,~ 扩展为另一个路径,因此 ~/.bash_profile 不再指向相关文件。这是因为在此上下文中,~ 表示 $HOME

如果你知道实际家目录的完整路径,可以使用它代替 ~。在 Mac 上,它可能看起来像这样:

nano /Users/YourUserName/.bash_profile
或者让你的Bash在用户数据库中查找你的主目录,而不仅仅看$HOME。这不需要你记住任何东西:
nano ~YourUserName/.bash_profile
修改你的HOME变量而不改变你实际的主目录并不是一个好主意。改变任何用户的主目录是一个管理任务,通常普通用户不能这样做。

太棒了,我又找到了,谢谢!你介意详细解释一下“文件被获取后”的意思吗?我对文件被获取是什么意思不太了解。 - Matt
6@Matt .bash_profile 是一个 Bash 脚本的形式。你可以运行一个脚本或者将其作为资源进行引用。运行脚本意味着创建一个子shell并在其中逐行执行脚本。资源引用则是在当前 shell 中执行脚本。某些旨在影响当前 shell 的任务无法在子shell中执行;更改当前 shell 中的变量就是其中之一。这就是为什么有些文件需要被资源引用,而不是在子shell中执行。要手动引用一个文件,请使用. 文件. 是 POSIX 规范指定的)或 source 文件source 是少数几个 shell 可理解的非 POSIX 扩展命令)。 - Kamil Maciorowski
4@Matt 看看这个:执行Bash脚本和源码之间有什么区别? - Kamil Maciorowski
2如果你(Matt)不知道你的主目录曾经在哪里,你可以使用 nano ~YourUserName/.bash_profile 来代替。这将在用户数据库中查找你的主目录,而不仅仅是查看 $HOME。 - Stig Hemmer
1@StigHemmer 答案现在已经变成了社区维基。您的有用评论已被吸收。谢谢您。 - Kamil Maciorowski

  • 相关问题