为了在OS X中为终端创建别名,您可以将别名放在.bash_profile
或.bashrc
文件中。这两者有什么区别,我为什么要选择将别名放在其中一个而不是另一个?
为了在OS X中为终端创建别名,您可以将别名放在.bash_profile
或.bashrc
文件中。这两者有什么区别,我为什么要选择将别名放在其中一个而不是另一个?
.bash_profile
是用于登录 shell 的执行文件,而 .bashrc
是用于交互式非登录 shell 的执行文件。
当您通过控制台登录(输入用户名和密码),无论是坐在机器旁边还是通过 ssh 远程登录时,.bash_profile
会在初始命令提示符之前执行以配置您的 shell。
但是,如果您已经登录到计算机并打开一个新的终端窗口(xterm),那么在窗口命令提示符之前会执行 .bashrc
。当您在终端中键入 /bin/bash
启动一个新的 bash 实例时,也会运行 .bashrc
。
在 OS X 上,默认情况下,Terminal 每次都会运行登录 shell,所以这与大多数其他系统有些不同,但您可以在首选项中进行配置。
.zprofile
文件。 - Adam Zerner[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*
这一行从 ~/.bash_profile
复制粘贴到 ~/.bashrc
文件中。RVM似乎会自动安装自己,就好像它总是在Mac上被安装一样。它假设每次启动终端时都会以登录shell模式运行。如果您以不同方式使用计算机,只登录一次,那么您需要进行一些调整。 - Matt Welke~/.bash_profile
或~/.profile
作为上述提到的资源,但如果你使用类似于exec bash
或从新窗口/选项卡中生成bash
,它只会寻找并使用~/.bashrc
。为了避免这种情况,可以使用exec bash -l
或bash -l
来生成一个新的'login' shell,这样它就会寻找.bash_profile/.profile
。对于在tmux/screen中创建的新窗口也是一样,它们只会使用~/.bashrc
。 - cmaceachernX11会查看你的.bashrc
,而“常规”的终端会查看.bash_profile
然而,如果你在.bash_profile
中添加以下内容,你可以将所有内容移动到.bashrc
文件中,以便将所有东西汇总到一个地方而不是两个:
if [ -f $HOME/.bashrc ]; then
source $HOME/.bashrc
fi
cd ~ ; ln -s .bashrc .bash_profile
。 - lhf~/.bash_profile
)。同时,在每个 shell 级别逐步定义一些内容也是经常需要的(~/.bashrc
)。建议取消这种自由并不是最好的主意。 - dan~/.bash_profile
文件,所以从终端的角度来看,实际上没有办法将这两者分开。 - mipadi.bash_profile
在子进程中永远无法再次被引用。每个嵌套的 Bash 层级都会引用 .bashrc
,所以如果你在 .bashrc
中放置类似 export A=a:$A
的内容,你的 $A
变量在嵌套的 Bash 中会变得更长。我通常将环境变量放在配置文件中,而将别名放在 RC 文件中。 - Franklin Yu. ~/.bashrc
)是一个source
的快捷方式,所以没有区别。请参考https://unix.stackexchange.com/questions/114300/whats-the-meaning-of-a-dot-before-a-command-in-shell - deadvoidsource .bashrc
,而 .bash_profile
中有 if [ -f $HOME/.bashrc ]; then source $HOME/.bashrc fi
这段代码时,会导致 .bashrc
中添加的路径重复。 - Johnif [ -f ~/.bashrc ]; then
source ~/.bashrc
fi
.bash_profile
。因此,上面的TLDR建议适用。
.bashrc
也是一个选项,但每次创建子shell(即调用bash
)时都会调用它,这可能会导致效率低下,特别是当您在其中更新变量(例如PATH=/bin/foo:$PATH
)时。.bash_profile
调用.bashrc
的片段非常常见。.bash_profile
来设置别名会变得复杂呢?你列出的项目只是部分涉及到别名,所以除了简单地列举一些可能解释“为什么”它似乎很复杂的要点之外,你是否可以提出一种在这些限制条件下使其更加简便的方法呢? - nohillside if [ -f ~/.bash_profile ]; then
source ~/.bash_profile
fi
brew install bash
并且使用iTerm2,你可以将profile -> command
设置为/usr/local/bin/bash
,这样默认会在.bash_profile
之后加载.bashrc
。这还能让你享受到Bash 4的好处... - Ray Foss.bash_profile
,那是因为macOS Catalina从bash
切换到了zsh
;因此现在你需要使用.zprofile
而不是.bash_profile
。 - Quazi Irfan