如何在OS X上编辑$PATH(.bash_profile)?

284

我想编辑PATH中的一个条目,因为我做错了什么。

我使用的是Mac OS X v10.10.3 (Yosemite)。

我已经尝试过:

touch ~/.bash_profile; open ~/.bash_profile

但是文件编辑器打开后里面什么都没有。
我的问题:
我正在尝试将ANDROID_HOME添加到我的PATH中。
我拼错了,但当我关闭终端并返回时,它就消失了,所以我又尝试了一次:
export ANDROID_HOME=/<installation location>/android-sdk-macosx
export PATH=${PATH}:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools
这次,我正确输入了命令,但是当我关闭终端后,我的设置再次消失了。
如何执行我想要的设置?
如果我要编辑bash.profile,我该如何输入上述代码?

3
根据您喜欢的编辑器,使用vi ~/.bash_profilesubl ~/.bash_profilemate ~/.bash_profile - Droppy
刚刚尝试了nano ~/.bash_profile命令,它载入了,但里面什么也没有。 - Thiago
1
看起来.bash_profile文件是空的/丢失了。 - Droppy
12
对于像新手一样的人,这些笔记会有所帮助:
  1. ~/.bash_profile 表示它位于根目录中。 ~ 意味着根目录。
  2. 文件名以.为前缀对于 ls 命令是不可见的。它们有点像隐藏文件,普通用户不需要看到它们。但我们这里是个例外。要查看它们,可以使用 ls -a 命令。
  3. touch 命令将在指定的目录中创建一个文件,_如果_该文件不存在。如果存在,则什么也不会发生。
- mfaani
3
  1. 显然,open 命令会使用你的默认文本编辑器打开它。
  2. 因此,在任何目录下执行 touch ~/.bash_profile 命令都可以生效,因为你的路径不是相对路径。
- mfaani
5
@Honey:~ 表示主目录(即 $HOME),而不是根目录(即 /)。 - Davis Herring
11个回答

507

你需要使用文本编辑器打开那个文件并保存。

touch ~/.bash_profile; open ~/.bash_profile

它将使用TextEdit打开文件,将内容粘贴后保存。如果您再次打开它,您会发现您所做的更改。

您也可以使用其他编辑器:

nano ~/.bash_profile
mate ~/.bash_profile
vim ~/.bash_profile

但如果您不知道如何使用它们,那么使用open方法会更容易。


或者,您可以依赖于pbpaste。复制

export ANDROID_HOME=/<installation location>/android-sdk-macosx
export PATH=${PATH}:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools

将内容复制到系统剪贴板,然后在命令行中运行

pbpaste > ~/.bash_profile

或者您也可以使用 cat

cat > ~/.bash_profile

现在cat正在等待输入:请粘贴两个导出定义然后按下 Ctrl + D


当文本包含对环境变量的引用时,使用诸如“cat”之类的工具将其写入文件会出现问题,因为这意味着这些引用需要进行转义。更常见的做法是使用文本编辑器。 - Droppy
如果我输入“touch ./bash_profile”(它不会显示任何内容),然后输入“open .bash_profile”,它告诉我该文件不存在,这意味着什么? - Dronz
如果您正在使用Catalina,请按照以下步骤操作:https://mkyong.com/maven/install-maven-on-mac-osx/#install-maven-manually - sss
将此答案中的 bash_profile 替换为 zshrc - Dror Bar
使用所有方法都得到空文件。 - user2568374
显示剩余2条评论

133
对于初学者来说,稍微详细一些
在Mac上开始使用.bash_profile之前,请注意自从macOS Catalina以来,Zsh(z shell)已成为默认的shell。因此,我们过去放在.bash_profile中的东西现在属于.zshenv或.zshrc文件。
关于.zshenv和.zshrc的说明(来源):
.zshenv:shell的调用。通常包含应该对其他程序可用的导出变量。例如,$PATH。
.zshrc:仅在交互式shell中被调用。它应该包含设置别名、函数、选项、键绑定等命令。

步骤1

确保 .bash_profile 文件存在(或者当然也可以是 .zshenv)。记住,默认情况下并没有 .bash_profile 文件。你需要自己创建它。

进入你的用户文件夹。 你应该能在那里找到 .bash_profile 文件。 -> HD/Users/[用户名]

记住:以'.'开头的文件默认是隐藏的

在 macOS Finder 中显示隐藏文件的方法:

  • 按下 Command+Shift+.

如果它不存在,你需要自己创建 .bash_profile

打开终端应用程序,并使用简单的命令切换到用户文件夹

cd

如果文件不存在,使用以下命令创建文件:
touch .bash_profile

第二步

如果你记不住在vim、nano等编辑器中保存和关闭的命令(如上所推荐的方式),最简单的编辑方式是在你喜欢的代码编辑器(如Sublime Text、Visual Studio Code、BBEdit等)中打开.bash_profile(或.zshenv)文件。

Finder -> 用户文件夹。右键点击 -> 使用Visual Studio Code(或其他代码编辑器)打开。或者将其拖到Dock栏上的应用程序中。然后你就可以在其中进行编辑,在新行中添加导出命令。


1
我个人发现使用emacs访问“隐藏”的文件通常是一个优点... - Mallory-Erik
2
我更新了在Mac OS的Finder中显示隐藏文件的方法。 按键组合:Command + Shift + . - Herr_Hansen
由于某些原因,touch命令未能创建文件,但我使用了Alessandro的回答中提到的cat命令来完成。 - Dronz
换句话说,你现在想做的是 touch ~/.zshrc; open ~/.zshrc - Dror Bar

85

如果您使用的是macOS v10.15(Catalina),则需要更新.zshrc文件,而不是.bash_profile.profile文件。


4
哇,我一直在努力弄清楚为什么无法更新Bundler并且系统正在寻找错误的Ruby路径。我应该将我的bash_profile复制粘贴到zshrc中吗? - ricks
我使用的是Catalina操作系统,但我找不到那个文件,你能解释一下这个目录是什么吗? - EdwinCab
WTF,这太疯狂了! - loretoparisi
1
您需要确保您的终端现在是zsh,使用 chsh -s /bin/zsh。这将激活您的终端自动成为zsh。然后您可以在 ~/.zshrc 或 ~/.zprofile 中进行更改。 - kevin_theinfinityfund
3
谢谢你。 如果你不想再重新打一遍,可以简单地执行以下操作: mv .bash_profile .zshrc - Richard Miller

24

对于Mac OS,请按照以下步骤进行:

  1. 首先,打开终端并键入: cd ~/

  2. 创建您的Bash文件: touch .bash_profile

    您已经创建了“.bash_profile”文件,但如果您想要编辑它,请继续阅读第三步。

  3. 编辑您的Bash个人资料: open -e .bash_profile

    之后,您可以从屏幕左上角保存:文件保存

  4. 完成!


1
touch ~/.bash_profile解决了问题。谢谢。 - Kamlesh

10

设置路径JAVA_HOMEANDROID_HOME。你需要打开终端并输入以下命令。

touch ~/.bash_profile; open ~/.bash_profile

接下来,将以下路径粘贴到基本配置文件中并保存:

export ANDROID_HOME=/Users/<username>/Library/Android/sdk 
export PATH="$JAVA_HOME/bin:$ANDROID_HOME/platform-tools:$ANDROID_HOME/emulator:$PATH"
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home

关于“基本配置文件”:您是指“Bash的*.profile*文件”吗? - Peter Mortensen

9
对于初学者:在macOS上,在您的主目录中创建.bash_profile文件,运行以下命令:
nano ~/.bash_profile

然后你可以粘贴以下内容:

https://gist.github.com/mocon/0baf15e62163a07cb957888559d1b054

如您所见,底部包含一些示例别名和环境变量。
在完成更改后,请按照Nano编辑器窗口底部的指示进行保存(Ctrl + O)和退出(Ctrl + X)。然后关闭您的终端并重新打开它,您将能够使用您新定义的别名和环境变量。

8

只需在终端上键入open ~/.bash_profile,即可编辑它。


5

在终端中输入echo $SHELL确定你正在使用哪个shell。

然后打开/创建正确的rc文件。对于Bash shell,它是$HOME/.bash_profile$HOME/.bashrc。对于Z shell,它是$HOME/.zshrc

将这一行添加到文件末尾:

export PATH="$PATH:/your/new/path"

为了验证,刷新变量可以通过重新启动终端或输入 source $HOME/.<rc 文件> 然后执行 echo $PATH


2
Mac OS X不会将路径存储在文件.bash_profile中,而是存储在文件.profile中,因为Mac OS X是*BSD家族的一个分支。一旦您在终端上执行cat .profile命令,您应该能够在.profile文件中看到导出的blah blah blah。

3
自从 Yosemite(10.10)版本以后,这个说法就不再正确(如果曾经正确过的话)。Bash 早已成为 macOS 的默认 shell。历史上,*BSD 使用的是不兼容的 csh,并使用 .cshrc 而不是 .profile(尽管如果需要使用多个 Bourne 兼容的 shell,则在 .profile 中设置共同的参数是有意义的)。 - tripleee

2
最简单的答案是:
步骤1:打开Terminal.app 步骤2:输入nano .bash_profile – 这个命令将在Terminal中使用最易用的文本编辑器Nano打开.bash_profile文档(如果不存在,则创建它)。
步骤3:现在,您可以对文件进行简单更改。粘贴这些代码行以更改您的终端提示符。
export PS1="___________________    | \w @ \h (\u) \n| => "

export PS2="| => "

步骤4:现在通过键入Ctrl+O保存您的更改。按Return以保存。然后通过键入Ctrl+X退出Nano。
步骤5:现在我们需要*激活您的更改。键入source .bash_profile,观察您的提示符更改。
就这样!享受吧!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接