.bash_profile在哪里?
我想将新别名添加到我的.bash_profile
文件中,但我找不到此文件。
它应该在哪里?
它是一个隐藏文件,位于您的主文件夹中:
~/.bash_profile
( ~
扩展到您的主目录。如果您的用户名是user
,结果将是: /home/user/.bash_profile
)。
因为它是一个隐藏文件,所以你必须让它可见。 要在Nautilus中执行此操作,请转到“查看”菜单并选中“显示隐藏文件”(或按快捷键Ctrl + H )。
如果您使用Kubuntu和Dolphin,则必须按Ctrl + 。 切换文件的可见性。
~/.bash_profile
不是放置别名和函数的正确位置。 他们应该进入~/.bashrc
。 有关说明,请参见http://mywiki.wooledge.org/DotFiles 。
将所有别名放在用户主目录中的~/.bash_aliases
中非常方便。 这是注释中~/.bashrc
文件中的建议。
您通常不会在Ubuntu上使用.bash_profile
, 也不应该通常创建该文件。 正如jpezz所说 ,它将出现在你的Ubuntu系统的主目录中,这就是~
代表的,你可以在那里创建它。 但是如果你这样做,你应该小心,因为它会阻止bash
自动运行.profile
的命令 – 你几乎肯定会这样做 。
当bash
作为登录shell运行时 ,在WSL或其他方式1中 ,它运行主目录中存在的.bash_profile
, .bash_login
或.profile
中的第一个。 如果您在登录时要运行特定于bash
命令 – 但仅当bash
是您的shell时 – 您可以将它们放在.bash_profile
。 但仅仅存在.bash_profile
会阻止.profile
被使用。
那么你就想从.bash_profile
.profile
,假设你想要运行那些命令,你几乎总是这样。 您可以通过将此命令放在.bash_profile
来执行此操作:
. ~/.profile
(有些读者可能习惯于将它写成. "$HOME/.profile"
当它出现在启动脚本中时。这总是很好 – 你可能更愿意将它用于需要在bash
以外的shell上工作的命令如果你需要容纳那些不支持标准function的极老shell,那么你也不需要它。在任何情况下, bash
总是支持代字号扩展 ,而.bash_profile
是只有bash
运行来自它的命令,所以. ~/.profile
很好。)
这个.
内置源文件,也就是说它运行当前shell中文件的所有命令。 打开交互式bash
shell并运行help .
欲获得更多信息。
你在Ubuntu上通常没有.bash_profile
的原因,即使你有想要在登录时运行的特定于bash
命令,默认情况下,用户的.profile
文件包含检查当前shell是否为bash
,然后导致这样的命令运行。
对于.profile
或.bash_profile
等文件的问题,还有另一个答案。 这些文件的缺省版本存在于/etc/skel
目录中。 在Ubuntu系统上创建用户帐户时,该目录中的文件将被复制到Ubuntu主目录中 – 包括您在安装Ubuntu时创建的用户帐户。 如果查看该目录,您会注意到有一个名为.profile
的文件 – 以及.bashrc
等其他文件 – 但是没有名为.bash_profile
文件。 这就是为什么 – 或者,实际上, 如何 –没有.bash_profile
存在于您的Ubuntu主目录中,除非您自己创建它。
最后,你不应该把别名放在.profile
中,也不应该把.bash_profile
放在一个好地方,正如geirha正确地说的那样 。 这是因为您希望别名在交互式shell中工作,无论它们是否是登录shell。 相反,在.bashrc
或更好的.bash_aliases
定义你的别名(如客人boeroe指出的那样 ),默认的.bashrc
来源。 请参阅如何创建永久性Bash别名?
默认的.profile
文件将检查您是否正在运行.bash
shell和源.bashrc
如果您是:
# if running bash if [ -n "$BASH_VERSION" ]; then # include .bashrc if it exists if [ -f "$HOME/.bashrc" ]; then . "$HOME/.bashrc" fi fi
同时默认的.bashrc
将在顶部退出,如果它在非交互式shell中运行则不会执行任何操作,因此如果它在非交互式登录shell中由.profile
获取,则其中的命令将不会运行晦涩的场景2 :
# If not running interactively, don't do anything case $- in *i*) ;; *) return;; esac
因此,如果您将别名放在.bashrc
或.bash_aliases
,您将获得交互式登录shell(使用.profile
)以及交互式非登录shell(使用.bashrc
)。 这就是你想要的。 只是不要把任何东西放在交互性检查之上,除非你真的, 真的知道你在做什么。
1这个答案最初是针对与WSL相关的问题编写的,但该问题已经作为重复内容完成,这个答案也完全适用于此,所以我扩展了一点并在此处发布了它。
2当bash
检测到它可能作为非登录shell的远程登录的初始shell运行时 – 例如当您使用ssh
在远程计算机上运行单个命令时 – 它运行来自.bashrc
命令。 (请参阅GNU Bash手册中的6.2 Bash Startup Files 。)
只想进入 – 即使文件隐藏在查看器中,如果只输入文件名,仍然可以打开所有文件。 例如,如果您在dolphin地址栏/home/
其他方法是只打开您喜欢的编辑器,只需输入文件名。
我认为这是处理隐藏文件的最佳方式,因为它显示的不仅仅是添加可以避免的噪音。
和别名应该进入.bashrc,就像geirha写的那样。