Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 如何使OSX读取.bash_配置文件而不是.profile文件_Macos_Bash - Fatal编程技术网

Macos 如何使OSX读取.bash_配置文件而不是.profile文件

Macos 如何使OSX读取.bash_配置文件而不是.profile文件,macos,bash,Macos,Bash,我读了很多关于不要将自定义命令放入“.profile”文件的建议。而是为自己创建一个.bash_配置文件,并添加别名等 但是,当我打开新终端时,如果只有.bash_配置文件,OSX不会导出/获取其中提到的命令。我必须手动获取.bash_配置文件的源代码 如果我创建.profile文件,在打开一个新终端时,.profile中的所有命令都会被执行,并且随时可用 你能帮我理解一下它是如何工作的吗?另外,何时使用.bashrc/.profile/.bash\u概要文件 谢谢 根据OS X附带的手册页面:

我读了很多关于不要将自定义命令放入“.profile”文件的建议。而是为自己创建一个.bash_配置文件,并添加别名等

但是,当我打开新终端时,如果只有.bash_配置文件,OSX不会导出/获取其中提到的命令。我必须手动获取.bash_配置文件的源代码

如果我创建.profile文件,在打开一个新终端时,.profile中的所有命令都会被执行,并且随时可用

你能帮我理解一下它是如何工作的吗?另外,何时使用.bashrc/.profile/.bash\u概要文件


谢谢

根据OS X附带的手册页面:

。。。它按该顺序查找
~/.bash\u profile
~/.bash\u login
~/.profile
,并从第一个存在且可读的文件读取和执行命令。当外壳开始禁止此行为时,可以使用--noprofile选项

如果
~/.bash\u profile
~/.bash\u login
都不可读,则只能作为最后手段读取
~/.profile

在我所有的OS X系统上,我的
~/.bash\u配置文件设置为:

if [ -f ~/.bashrc ]; then
    source ~/.bashrc
fi

强烈建议您在OS X上执行此操作,以便让bash按照预期读取
~/.bashrc
文件。

应该提到的是,bash将首先查找
/etc/profile
文件,如bash手册页中所述

当bash作为交互式登录shell或非inter调用时- 带有--login选项的活动shell,它首先读取并执行com- 从文件/etc/profile中读取命令(如果该文件存在)。读取后 该文件将查找~/.bash\u配置文件、~/.bash\u登录名和~/.profile, 并从第一个 存在并且可读。当 shell已开始禁止此行为


您的终端shell也可能默认为sh而不是bash。您可以首先验证这一点:

$ echo $SHELL
/bin/tcsh
要将其更改为bash,您可以进入终端->首选项->启动选项卡,并将“Shell打开方式:”从“默认登录Shell”更改为命令和值“/bin/bash”

或者,您可以通过在命令提示符下执行以下命令来更改默认shell:

chsh -s bin/bash

执行其中一项操作后,打开一个新的shell窗口,您的.bash_配置文件应该会被获取。

我只需将
bash
(换行)添加到~/.bash_配置文件中即可解决此问题。

您可以使用
zsh
来解决此问题

zshell(也称为
zsh
)是一个构建在上面的Unix shell 具有附加功能的
bash
(macOS的默认外壳)。它是 建议在
bash上使用
zsh

安装

  • 使用自制软件安装zsh:
    $brew安装zsh
  • 安装Oh My Zsh:
    $sh-c“$(curl-fsSLhttps://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)“
  • 移动到
    .bash_profile
    设置
    .zshrc
    文件
  • 要应用所做的更改,您需要启动新的shell 实例或运行:
    source~/.zshrc
  • 根据,

    zsh(zshell)是所有新创建的用户帐户的默认shell,从macOS Catalina开始

    因此,您应该使用以下命令验证默认shell:

    $ echo $SHELL
    
    如果结果为/bin/bash,则默认shell为bash,如果结果为/bin/zsh,则默认shell为zsh

    使用
    $cd~/
    返回主页,创建配置文件(如果不存在)并使用以下命令进行编辑:

    对于bash:

    $ touch .bash_profile
    $ open .bash_profile
    
    对于ZSH:

    $ touch .zprofile
    $ open .zprofile
    

    对于任何其他找到此配置文件的人,而不是bash_配置文件,对于新版本的mac,您可以使用
    .zshrc
    。也就是说,做什么

    open .zshrc
    

    并在那里添加所需内容。

    相关:您确定您使用的是bash,而不是其他shell吗?试试
    echo$SHELL
    我在
    ~/.profile
    中的命令别名在终端中没有生效时遇到了同样的问题,通过使用将命令移动到
    ~/.bashrc
    中的方法解决了这个问题(并删除
    ~/.profile
    并制作小的
    ~/.bash\u配置文件
    )。但是,现在当我执行
    echo$PATH
    时,所有路径条目都会在输出中出现两次。所以还是有问题!奇怪的had
    .bash\u profile
    和terminal.app在此处忽略它。将文件(保留所有相同的权限)移动到
    .profile
    ,现在它很高兴。如果您使用的是
    zsh
    而不是
    bash
    ,请提醒。终端将生成
    .zshrc
    而不是
    .bash\u profile
    。从今天起,OSX Cataline中的默认终端外壳是
    zsh
    ,因此@Albertsuel的评论应该变成答案。@Albertsuel谢谢!刚买了一台新的mac电脑,这就解决了OSX上默认的
    bash
    没有源代码的问题。bashrc
    /etc/profile
    中的任何内容无关。相反,它与以下事实有关:
    Terminal.app
    将每个bash shell创建为一个登录会话,这样只会从
    ~/.bash\u profile
    ~/.bash\u login
    ~/.profile
    (以最先找到的为准)中获取源代码。如果您希望
    ~/.bashrc
    也被源代码化,请明确地从
    ~/.bash_profile
    中获取,如@Andon M.Coleman的回答所示。(如果您明确地将bash会话作为一个交互式非登录会话启动,
    ~/.bashrc
    将自动获取源代码。)您完全正确,我的解释发布得太匆忙了。感谢您的更正;我编辑了我的答案,并对你的评论投了赞成票,因为它正确地解释了我试图表达的意思