我在 Mac OS 上有一个
.bashrc
文件,我在其中设置了一些别名。当我完成并输入 source .bashrc
后,别名就完美地工作了。但是,如果打开另一个 shell,我的快捷命令将无法被识别,我需要再次执行 source .bashrc
。怎样才能一劳永逸呢?
Terminal 和 iTerm 2 默认打开新 shell 作为登录 shell。当 Bash 作为登录 shell 打开时,它显示为
~/.bash_profile
,但不是 ~/.bashrc
。
参见 https://www.gnu.org/software/bash/manual/html_node/Bash-Startup-Files.html:
作为交互式登录 shell 调用,或使用 --login 调用
当 Bash 作为交互式登录 shell 或带有 --login 选项的非交互式 shell 被调用时,它首先从文件 /etc/profile 中读取并执行命令(如果该文件存在)。读取该文件后,它会按顺序查找 ~/.bash_profile、~/.bash_login 和 ~/.profile,并从第一个存在且可读的文件中读取并执行命令。启动 shell 时可以使用 --noprofile 选项来抑制此行为。
所以要么:
~/.bash_profile
代替 ~/.bashrc
。~/.bashrc
,但来源 ~/.bashrc
来自 ~/.bash_profile
。我已经完成了最后两项。例如
tmux
和 Emacs 中的 shell 模式将新 shell 作为非登录 shell 打开。我仍然从 ~/.bashrc
获取 ~/.bash_profile
,因为当我 ssh 到我的计算机时,Bash 会作为登录 shell 打开。
我遇到了同样的问题并解决了。 Macos 已将默认 shell 从
bash
更改为 zsh
。
所以我尝试修改
~/.bashrc
和 ~/.bash_profile
和 source
但仅适用于当前终端。
事实是您应该修改
~/.zshrc
配置文件。
试试吧我的朋友!
终端可能是 zsh 终端,将 .bashrc 文件名更改为 .zshrc 即可完成工作。答案来自: https://stackoverflow.com/a/72019457/27737125
nano ~.bash_profile(打开~.bash_profile)
别名(){ ssh 用户@ip 地址 }(您可以为别名添加任何命令,我已经显示了特定 IP 地址的 ssh 命令)
按 Control+O 并按 Enter(保存文件)。 Control+X(退出nano编辑器)
来源.bash_profile
现在,每当您键入别名时,您就可以在所有终端上获得持久命令。