我更改了“ HOME”变量,现在找不到“〜/ .bash_profile”来将其更改回


15

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

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


9
基本上~是指$HOME
el.pescado

6
...因此,如果您重新定义$HOME,也~将重新定义
el.pescado

Answers:


32

在同一个地方。

在更改~扩展为之前/Users/YourUserName,外壳程序会在.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中执行的原因。要手动获取文件,请使用. file.由POSIX指定)或source filesource是少数外壳程序可以理解的非POSIX扩展名)。
卡米尔Maciorowski


2
如果您(马特)不知道自己的主目录曾经在哪里,则可以nano ~YourUserName/.bash_profile改用。这将在用户数据库中查找您的主目录,而不仅仅是查看$ HOME。
Stig Hemmer '18 -10-8

1
@StigHemmer答案现在是社区Wiki。您的有用评论已被同化。谢谢。
卡米尔Maciorowski
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.