.bash_profile 在哪里?

.bash_profile 在哪里?

我想为我的.bash_profile文件添加新别名,但找不到此文件。
它应该在哪里?

答案1

它是一个隐藏文件,位于您的主文件夹中:

~/.bash_profile

~扩展为您的主目录。如果您的用户名是user,则结果将是/home/user/.bash_profile:)。

由于它是隐藏文件,因此您必须将其显示出来。要在 Nautilus 中执行此操作,请转到“查看”菜单并选中“显示隐藏文件”(或按快捷键Ctrl+ H)。

如果您将 Kubuntu 与 Dolphin 一起使用,则必须按Ctrl+.来切换文件的可见性。

答案2

~/.bash_profile不是放置别名和函数的正确位置。它们应该放在 中~/.bashrc。请参阅http://mywiki.wooledge.org/DotFiles寻求解释。

答案3

.bash_profile在 Ubuntu 上通常不需要你也不应该通常会创建该文件。作为jpezz 说,它将位于 Ubuntu 系统的主目录中,这就是所~代表的意思,您可以在那里创建它。但是如果你这样做,你应该小心,因为它会阻止bash自动运行命令.profile——你几乎肯定有。

什么时候bash 作为登录 shell 运行,在 WSL 或其他方式中1,它会运行您主目录中存在的第一个.bash_profile.bash_login或。如果您有想要在登录时运行的特定命令(但仅在您的 shell 是 时),则可以将它们放入 中。但 的存在本身就会阻止使用。.profilebashbash.bash_profile.bash_profile.profile

那么你会想要来源 .profile来自.bash_profile,假设您也希望运行这些命令,这几乎总是会的。您可以通过在中输入以下命令来实现.bash_profile

. ~/.profile

(有些读者可能习惯于. "$HOME/.profile"在启动脚本中看到这样的写法。这总是没问题的——bash如果你需要适应不支持的非常旧的 shell,你可能更喜欢将它用于需要在 shell 上工作的命令。标准功能,嗯,你不需要这个。无论如何,bash总是支持波浪号扩展并且的要点.bash_profile是只bash运行来自它的命令,所以. ~/.profile没问题。)

内置.命令会获取某个文件,也就是说,它会在当前 shell 中运行该文件中的所有命令。打开交互式bashshell 并运行help .以获取更多信息。

.bash_profile在 Ubuntu 上,即使你有一些bash要在登录时运行的特定命令,你通常也不会这样做是,默认情况下,用户的.profile文件包含检查当前 shell 是否为的代码bash,然后导致运行此类命令。

.profile对于诸如或之类的文件在哪里的问题,还有另一种答案.bash_profile。这些文件的默认版本存在于/etc/skel目录中。当在 Ubuntu 系统上创建用户帐户(包括您在安装 Ubuntu 时创建的用户帐户)时,该目录中的文件将被复制到 Ubuntu 主目录中。如果您查看该目录,您会注意到有一个名为.profile-- 的文件,以及一些其他文件,例如.bashrc-- 但没有名为 的文件.bash_profile。这就是为什么——或者,实际上,如何--no.bash_profile存在于您的 Ubuntu 主目录中,除非您自己创建了它。


最后,你应该不是.profile根本不要使用别名,也不.bash_profile适合使用别名,作为geirha 正确地说。这是因为无论是否是登录 shell,您都希望别名在交互式 shell 中工作。相反,在.bashrc或更好的情况下.bash_aliases(如嘉宾 boeroe 指出),这是默认.bashrc来源。请参阅如何创建永久的 Bash 别名?

默认.profile文件将检查您是否正在运行bashshell 和源.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 中运行,默认将在顶部退出而不执行任何操作,因此如果它.profile非交互式登录 shell 和其他更不为人知的场景2

# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac

所以如果你将别名放入.bashrc或放入.bash_aliases,您将获得它们用于交互式登录 shell(.profile使用的地方)以及交互式非登录 shell(.bashrc使用的地方)。这就是您想要的。只是不要将任何内容放在交互性检查之上,除非您真的,真的知道自己在做什么。


1这个答案最初是为一个与 WSL 相关的问题,但该问题已作为重复问题关闭,并且该答案也完全适用于此处,因此我稍加扩展并将其发布在此处。

2bash检测到它可能正在作为远程登录的初始 shell 运行时不是登录 shell——例如当你使用ssh在远程计算机上运行单个命令 - 它运行来自的命令.bashrc。(请参阅6.2 Bash 启动文件在里面GNU Bash 手册

答案4

只是想补充一下 - 即使文件在查看器中被隐藏,只要输入文件名,你仍然可以打开所有文件。例如,如果你在 dolphin 地址栏中输入 /home/<user>/.bashrc,它将使用默认编辑器打开文件,而无需切换显示/隐藏某些文件。

另一种方法是打开您最喜欢的编辑器并输入文件的名称。

我认为处理隐藏文件的最佳方式是显示而不显示只会增加可以避免的噪音。

别名应该放在 .bashrc 中,如下所示盖尔哈写道。

相关内容