Bash别名未保存超过一个会话?

Bash别名未保存超过一个会话?,bash,Bash,我试图创建一个bash别名,用于遍历几个文件夹,但在关闭终端后,该别名不会保存 我已经将别名保存在.bashsrc文件中,并且已经运行了命令。~/。bashsrc 以下是我所做的: sudo nano .bashsrc bashsrc内部: alias x = 'cd Documents/Photos/Family' 然后保存并退出 . ~/.bashsrc 别名在该终端窗口中工作,但如果我重新启动终端或打开新选项卡,则显示“未找到命令”。您应该更喜欢在~/.bashrc和~/.bash\

我试图创建一个bash别名,用于遍历几个文件夹,但在关闭终端后,该别名不会保存

我已经将别名保存在.bashsrc文件中,并且已经运行了命令。~/。bashsrc

以下是我所做的:

sudo nano .bashsrc
bashsrc内部:

alias x = 'cd Documents/Photos/Family'
然后保存并退出

. ~/.bashsrc

别名在该终端窗口中工作,但如果我重新启动终端或打开新选项卡,则显示“未找到命令”。

您应该更喜欢在
~/.bashrc
~/.bash\u profile
中设置更改

alias x='cd Documents/Photos/Family'
此外,请记住别名不会导出到子shell,使用此别名时,您始终需要位于
文档所在的目录中。我猜您的
文档
目录在家中,因此如果您执行以下操作会更好:

alias x="cd "$HOME"/Documents/Photos/Family"
只需将这一行添加到两个文件的末尾并保存即可

在简单语言中,有两种类型的shell用于您的案例,登录shell和非登录交互式shell

在启动登录shell之前,
.bash\u profile
是源代码,而在启动非登录shell之前,
.bashrc
是源代码

因此,您应该在这两个方面都添加您的更改

如果您使用的是macOS,
.bashrc
对您的案例几乎没有用处。MacOS会将您在终端中打开的每个shell视为登录shell。虽然有一些例外我不记得了


正如David在评论中提到的,在一些发行版中,
~/.bash_profile
只是
~/.profile
(例如Debian、openSUSE等)。

您想要的文件名为“.bashrc”,而不是“.bashsrc”。我不知道为什么它会显示“command not found”,而不是“bash:alias:x:not found”“bash:alias:=:not found”,但是
=
@MichaelAlbers周围不能有空格:因为OP似乎是手动获取他的文件,所以他可以随意调用它。@user1934428-是的,他可以。但如果他把它称为非标准的东西,当他重新启动终端时,它将不会自动来源。所以“那个家伙”是对的。@StephenC:即使我们称它为
.bashrc
,这肯定是合理的,但如果终端通过
bash--login
启动shell,它也不会像许多终端应用程序那样自动获取源代码。这就是为什么从.bash_profile手动获取.bashrc是一个好主意。值得一提的是,在一些发行版上,
~/.bash_profile
只是
~/.profile
(例如Debian、openSUSE等…)@DavidC.Rankin,当然,我会将其添加到我的答案中。这更多的是一个信息。考虑到OP遇到的问题,如果他查看并没有发现
~/.bash_profile
,知道它也可以命名为
~/.profile
,可以防止再次困惑<代码>:)
这成功了!正如你所指出的,我当时正在开发Mac。bashrc是非常无用的。因此,我将该行添加到.bash_配置文件中,现在它可以完美地工作了。谢谢