37

我已经安装了 Hadoop,每次我想运行它时,首先我必须这样做:

source ~/.bash_profile

否则它不会识别命令hadoop

这是为什么?

我在 OSX 10.8

4

7 回答 7

67

现在我们已经缩小了问题的范围:

  1. 在命令行运行ps -p $$以确定您实际上正在使用 bash shell。
  2. 意识到您在 zsh 中,这意味着您应该在.zshrc.
  3. 将违规行从.bash_profileto复制到.zsh,或
  4. 修改您.zshrc的直接来源您的.bash_profile.

更新:执行@TC1 在评论中提到的操作,并将特定于 shell 的代码保留在每个 shell 自己的配置文件中,并且从这些配置文件中,仅与源 shell 无关的代码。

于 2013-03-31T20:41:43.643 回答
19

在 Mac Catalina 上,我只需要在终端上打开“首选项”并将“打开的 shell”从“默认”更改为“命令(完整路径)”,默认路径为“/bin/zsh”。touch ~/.zshrc,如果该文件尚不存在,则将您的内容从“.bash_profile”复制/粘贴到“.zshrc”文件中。

于 2020-03-05T15:45:22.243 回答
13

bash_profile.sh适用于bash外壳。如果您的默认 shell 不是bash,并且如果您的默认 shell 是其他 shell,zsh那么您必须手动加载.bash_profileusing source ~/.bash_profile.

您始终可以将默认外壳更改为bash外壳,以便.bash_profile自动加载文件。

为了自动加载.bash_profile,您可以bash使用以下命令更新您的默认 shellchsh -s /bin/bash

cat /etc/shells将列出机器中可用的默认 shell

在此处输入图像描述

echo $SHELL将显示您机器中当前活动的 shell

在此处输入图像描述

要将活动 shell 更改为不同的 shell,请使用chsh -s /bin/bash. 然后echo $SHELL验证外壳是否已更改。

于 2021-02-18T07:41:33.233 回答
9

终端 -> 首选项 -> 配置文件 -> 外壳 -> 运行命令:source ~/.bash_profile

勾选在 shell 内运行。

完成所有这些后,只需注销并检查天气一切是否正常

于 2020-06-08T16:49:49.600 回答
1

我尝试了批准的答案。更改 .zshrc 文件适用于我的一台机器。但是对于另一个,当我运行 ps -p $$ 时,它是命令下的 -sh。我更改了 bash 和 zsh 文件,这次它们都不适合我。

所以我发现了这个 https://www.gnu.org/software/bash/manual/html_node/Bash-Startup-Files.html

它提到“当 Bash 作为交互式登录 shell 或作为带有 --login 选项的非交互式 shell 调用时,它首先从文件 /etc/profile 中读取并执行命令,如果该文件存在的话。”

所以我去了那个文件 /etc/profile 并在那个文件中添加了“source ~/.bashrc”。然后它可以工作,因为每次打开终端时,它都会运行该 /etc/profile 文件中的命令。

于 2018-04-09T20:35:27.560 回答
0

不确定这是否是最好的解决方案,但它有效。

sudo nano /etc/bashrc并改变它,重新启动终端,它终于用命令记住了。试过~/.bash_profile~/.bashrc没有成功,只是没有采购它。

于 2020-02-21T17:07:15.467 回答
0

转到“首选项/配置文件”,然后在右侧窗口中查找“shell”。

如果您的“启动运行命令”尚未打开,则一旦进入。单击该框将其打开,然后在命令部分中键入:

(如果你做了一个.zsh文件)

source .zsh ; clear 

(如果你做了一个.bash_profile

source .bash_profile ; clear

这样做; clear

将您的终端清除到新页面,以便您看不到终端显示:

“Last login: etc 
User@user-Mac ~ % source .zsh

如果你按我说的那样输入命令,你应该得到这个:

User@user-Mac ~ % 

这样,您将看到一个清晰的页面,没有多余的内容。还要确保您的.zsh.bash_profile别名正常工作,请键入以下命令以查看您的自定义别名列表:

Alias 

我喜欢做的一个别名是

alias LL=“ls -la”

这将显示一棵树或您所在的目录以及隐藏文件。

于 2020-10-14T19:41:36.940 回答