如何在Mac终端中运行~/.bash_profile

47

我正在安装一些编程和个人使用的工具,需要在终端中运行以下命令(如果您没有看标题,我是在Mac上):

~/.bash_profile

但是,它显示“权限被拒绝”,我正在运行OSX 10.8.4 Mountain Lion操作系统。我该如何绕过这个问题?


1
您已经标记了Python,这是不合适的。在删除标记之前,我想确保您没有将Python放入文件中,您能否在删除标记时添加注释? - Tom Kerr
看起来他正在尝试设置Python环境变量。 - Matthew Turner
7个回答

68
在 MacOS 上:将 source ~/.bash_profile 添加到 ~/.zshrc 的末尾。然后在打开 zsh 时,此配置文件将生效。

2
谢谢您的评论!任何使用 zsh 的人都会遇到这个令人沮丧的问题。 - Jesse
3
谢谢!这似乎现在尤其相关,因为zsh是macOS Catalina上的默认Shell。 - Tobias Kaufmann
1
恰好 @tobias,我也因同样的原因而不得不去 Google 它。 - Neo
一样的。谢谢你,不应该花这么长时间才能弄清楚! - Art Geigel
谢谢!我还得给自己.bash_profile文件赋予编辑权限! - Jessica

43

你绝不想去运行它,但可能希望使用它。

. ~/.bash_profile
source ~/.bash_profile
两个都应该可以。但这是一个奇怪的请求,因为在启动bash时,该文件应该会自动执行,除非您明确地以非交互方式启动它。从 man 页面中得知:
“当bash作为交互式登录shell或以--login选项作为非交互式shell调用时,它首先从文件/etc/profile读取并执行命令(如果该文件存在)。在读取该文件之后,它会查找~/.bash_profile、~/.bash_login和~/.profile,按照这个顺序,从第一个存在且可读的文件中读取并执行命令。当启动 shell 时可以使用 --noprofile 选项来禁止此行为。”

1
好的回答。但是有一种情况你可能想要使用source命令:如果你刚刚创建了它,并且希望它适用于当前会话。这听起来就像OP的情况。尽管如此,任何不知道~/.bash_profile. ~/.bash_profile之间区别的人最好还是创建一个新会话——例如,在Terminal.app中打开一个新标签页,然后关闭旧的标签页。 - abarnert
这对我有所帮助。但是我不得不手动获取它,即使重新启动终端也没有帮助。 - Saurabh Patil

10

如果你修改了.bash_profile文件,这只会应用于新的终端会话。

要将其应用于现有的会话,请运行source ~/.bash_profile。你可以使用此方式运行任何Bash脚本 - 将执行source视为在终端窗口中键入命令(来自指定的脚本)。

更多信息:如何从命令行重新加载.bash_profile?

奖励:您可以使用launchctl setenv GOPATH "${GOPATH:-}"将环境变量提供给OSX应用程序 - 不仅限于当前Bash会话,还包括如Visual Studio Code或IntelliJ之类的应用程序。


2
它对我有用,谢谢。我只是在我的主目录中输入了命令 source .bash_profile,其中我创建了这个 .bash_profile。 - Bravo
1
缺失路径(假设不在用户根文件夹中): source ~/.bash_profile - mobibob

1

我在zsh(macOS Big Sur 11.3)中遇到了这个错误,以下是我解决的方法:

进入终端。

cd /users/<你的用户名>

到达该目录后执行以下命令:

ls -al

你会看到很多文件,其中有一个特定的文件.zprofile。这是你的用户配置文件。我们需要编辑它。

profile file image

接下来我们需要编辑文件。执行以下命令:

nano .zprofile

一旦您发出此命令,文件将被打开以进行编辑。添加Maven的路径详细信息。

M2_PATH="/Users//code/apache-maven-3.8.1/bin" //添加您的Maven目录路径 PATH="${PATH}:${M2_PATH}" export PATH

按下ctrl + X并保存文件。

enter image description here

在保存文件后发出命令:
source .zprofile

完成后,您将能够运行mvn命令。

1

正如@kojiro所说,你不想“运行”这个文件。按照他的建议将其作为源文件引用。它应该在启动时被“引用”。 引用只是运行文件中的每一行,包括你想要运行的那一行。如果你想确保一个文件夹在特定的路径环境变量中(正如你在另一个解决方案的评论中所述),执行以下操作

$ echo $PATH

在命令行中,如果想要检查您的~/.bash_profile是否被启动时正确加载,或者手动加载时正确加载,请将以下行输入到您的~/.bash_profile文件中:
$ echo "Hello I'm running stuff in the ~/.bash_profile!"

1
不需要启动,它会在您启动Mac终端/ bash时自动执行。每当您进行更改时,可能需要重新启动终端。
~是.bash_profile的默认路径。

0
如果问题是您没有看到文件更改生效,只需打开一个新的终端窗口,它将被“源化”。您将能够在每个后续的终端窗口中使用正确的PATH等。

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