〜/ .profile,〜/ .bashrc和〜/ .bash_profile没有在新终端上运行启动

时间:2014-07-29 22:08:17

标签: macos bash terminal .bash-profile

我正在尝试为终端创建一个永久别名。我把别名放在我的〜/ .profile,〜/ .bashrc和〜/ .bash_profile文件中,以前是空的。当我启动一个新的终端时,bash不能识别别名,但是如果我找到它们中的任何一个,那就确实如此。为什么打开终端时这些没有运行?我在OSX上。

10 个答案:

答案 0 :(得分:19)

使用iTerm加载dotfiles时,需要做两件事。

首先,您应该将以下内容添加到.bash_profile

[[ -s ~/.bashrc ]] && source ~/.bashrc

其次,您需要确保在iTerm首选项中设置终端以启动登录shell。

iTerm Preferences

希望这有帮助!

答案 1 :(得分:11)

使用默认的mac终端,对我有用的是添加一个命令,在启动时运行以获取.bash_profile。

偏好设置>个人资料>启动>添加命令来源〜/ .bash_profile'

{{3}}

可能被认为有点hacky,但它可以解决问题。

答案 2 :(得分:5)

较新的MacOS版本将zsh用作Terminal和iTerm2的默认外壳。运行echo $SHELL确认是否适合您。

Zsh在外壳启动时会寻找.zshrc文件,因此要在采购bash配置文件的内容时继续使用zsh,可以运行以下命令:

echo "source ~/.bash_profile" >> ~/.zshrc

打开一个新的终端窗口,以使更改生效。

答案 3 :(得分:2)

截至High Sierra,终端和iTerm都希望首先加载〜/ .profile。所以我建议你在你的.profile中添加一行,让你的Mac像其他Unix一样工作:

source~ / .bash_profile

通过编辑这一个文件,您不必搜索多个应用程序的菜单来覆盖Apple在每个应用程序中的奇怪行为。

答案 4 :(得分:1)

为什么shell的初始化文件没有加载?

与大多数事情一样,它取决于

我最近遇到了同样的现象,并通过以下练习来解决它:

我使用iTerm。 iTerm默认运行登录shell。在iTerm首选项中验证>一般>命令> (*)登录Shell 因此,我知道〜/ .bash_profile将永远被调用。

知道了,我将以下内容放在〜/ .bash_profile文件中:

for file in ~/.{bashrc,bash_exports,bash_aliases,bash_functions}; do
    [ -r "$file" ] && source "$file"
done
unset file

请注意,我为.bashrc,.bash_exports等使用单独的文件。它使事情分离和简单。

另请注意,首先加载/ etc / profile,但由于我从未使用过该系统范围的初始化文件,因此我知道这不是我的问题。有关详细信息,请查看$ man bash

所以,我从〜/ .bash_profile文件开始。

我发现当我安装Canopy Express时,它的安装程序用以下内容替换了〜/ .bash_profile文件的内容:

# Added by Canopy installer on 2017-04-19
# VIRTUAL_ENV_DISABLE_PROMPT can be set to '' to make the bash prompt show that Canopy is active, otherwise 1
alias activate_canopy="source '/Users/lex/dev/python/User/bin/activate'"
# VIRTUAL_ENV_DISABLE_PROMPT=1 source '/Users/lex/dev/python/User/bin/activate'

P.S。 Canopy是一款优秀的免费python IDE,我强烈推荐。

幸运的是,我备份了我的〜/ .bash *文件,因此恢复很容易并快速解决了我的问题。

我的建议是了解调用初始化文件的顺序,从第一个开始,然后逐步完成,直到找到问题为止。

哦,你可能想验证你正在使用哪个shell(我使用bash):

~ $ echo $SHELL
/usr/local/bin/bash

答案 5 :(得分:1)

source ~/.profile添加到我的.bash_profile中为我工作。

答案 6 :(得分:0)

我猜您可能会使用其他shell,例如bash,tcsh,sh,zsh等。

source .bash_profile放入相应的'bashrc'文件中,即可恢复自动加载,即

  

.tcsh.login,bash.bash_profile,zsh.zshrc

答案 7 :(得分:0)

从Catalina开始,默认外壳现在为zsh。您可以使用chsh -s /bin/bash将其更改为bash,这将加载您的.profile.bash_profile

答案 8 :(得分:0)

很有可能,您可以自己创建文件,因为默认情况下它们似乎不存在。您应该授予他们执行权限以使其运行。

~ % sudo chmod 700 ~/.bash_profile

此外,您还应该检查文件的所有权。他们应该属于当前用户,而不是root。否则,您将得到permission denied错误。

~ % ls -a -l

~ % sudo chown <user_name> ~/.bash_profile

最后,请注意,bash在主目录中依次查找.bash_profile,.bash_login和.profile。如果发现第一个,Bash将停止寻找。 这意味着如果您同时具有.bash_profile和.profile文件,则.profile将不会运行。 For more information

希望这会对您有所帮助。

答案 9 :(得分:0)

通过取消选中 Preferences > General > tmux >

解决了我的问题

使用“tmux”配置文件而不是连接会话的配置文件