因为alias是shell内置命令,仅在当前进程有效;关闭终端后进程销毁,别名丢失。要永久生效,须将alias命令写入shell配置文件(如~/.bashrc),并执行source ~/.bashrc或重启终端。

为什么直接运行 alias 命令不永久生效
因为 alias 是 shell 内置命令,只在当前 bash 进程中有效。关掉终端、新开一个窗口,或者 SSH 重连后,进程重启,所有临时 alias 就丢了。
常见错误现象:你在终端里敲了 alias ll='ls -alh',立刻能用;但新开一个终端,ll 就报 command not found。
- 别名定义本身不带持久性,和
export VAR=value临时设环境变量一样 - 它不会自动写入任何文件,也不会跨进程继承
- 即使你用了
sudo alias或者在 root 终端里设,也只对那个终端有效
把 alias 写进 ~/.bashrc 是最常用且安全的做法
~/.bashrc 是每个用户自己的 Bash 初始化脚本,只要打开新终端(交互式非登录 shell),就会自动执行一遍。所以把 alias 放这里,等于每次开终端都“重新运行一次定义”。
Linux AI 服务器 — 将 Linux 服务器转换为本地 AI 推理集群。使用 systemd、NVIDIA CUDA 实现无头 Linux AI,零 GUI 开销。
- 用编辑器打开:
nano ~/.bashrc或vim ~/.bashrc - 推荐加在文件末尾,或已有注释
# Alias definitions/User specific aliases and functions后面 - 格式必须严格:
alias ll='ls -alh'—— 等号前后**不能有空格**,引号要匹配 - 写完保存,然后手动加载:
source ~/.bashrc(或. ~/.bashrc)
别名没生效?先检查这三件事
很多人改完 ~/.bashrc 却发现 alias 还是不认,大概率卡在这几个环节:
- 忘了
source ~/.bashrc—— 当前终端不会自动感知文件变化 - 误把 alias 写进了
~/.bash_profile,但你的终端启动的是 non-login shell(比如 GNOME Terminal 默认行为),它不读.bash_profile - 系统发行版(如 Ubuntu)默认启用了
~/.bash_aliases加载逻辑,但你没创建该文件,或没确认.bashrc里有if [ -f ~/.bash_aliases ]; then . ~/.bash_aliases; fi - alias 定义里用了未转义的特殊字符,比如
alias grep='grep --color=auto'没加单引号,可能导致语法错误,整个.bashrc后续内容被跳过
什么时候不该用 ~/.bashrc?考虑其他位置
绝大多数情况用 ~/.bashrc 就够了。但如果你遇到这些场景,就得换地方:
- 想让 alias 对所有用户生效(比如运维统一配置):改
/etc/bash.bashrc,需要sudo权限 - 你用的是 zsh 或 fish:别碰
.bashrc,对应去改~/.zshrc或~/.config/fish/config.fish - SSH 登录后首次运行的 shell 是 login shell,而某些系统没在
.bash_profile里 source.bashrc—— 此时 alias 在 SSH 登录后不可用,得在.bash_profile末尾加一行:[ -f ~/.bashrc ] && . ~/.bashrc
真正容易被忽略的点是:alias 的作用域依赖于 shell 启动方式,而不同桌面环境、终端模拟器、SSH 配置触发的 shell 类型(login vs non-login)并不一致。别只盯着“写进去没”,得看“谁来读它”。










