首页 > 你问我答 >

问 linux alias 命令 别名设置与永久生效详解

2026-11-08 22:21:26
最佳答案

答

linux alias 命令是 shell 内置命令,作用是给长命令或者复杂命令创建简短别名,把一长串指令绑定成自定义短名称,输入别名的时候 shell 会自动替换成原始完整命令,日常运维经常需要重复执行带参数的长命令,每次手动输入容易出错还浪费时间,使用 alias 之后可以大幅简化操作,这个命令属于 bash zsh 等 shell 自带功能,不需要额外安装软件,临时别名只在当前终端会话有效,关闭终端就会失效,如果想要开机自动加载永久别名,就需要写入用户或者全局的 shell 配置文件,学习的时候先掌握临时创建查看删除别名的基础语法,再理解永久生效的配置方法,区分用户级和系统全局配置,同时掌握别名优先级和常见坑,比如别名和原命令同名覆盖,命令嵌套引号转义问题,这样就能熟练使用 linux alias 命令优化日常终端操作。

一 基础语法说明

alias 是 shell 内建命令,不是独立外部程序,不同 shell 语法基本一致,主流 bash zsh 都支持

基础格式

alias 别名 =' 原始命令 '

查看全部别名

alias

查看单个别名

alias 别名名称

删除当前会话临时别名

unalias 别名名称

彻底清除全部临时别名

unalias a

语法要点

1 等号两边不能有空格,这个是新手最容易踩错的点

2 原始命令如果带参数选项,必须用单引号或者双引号包裹

3 如果命令里面本身包含引号,需要做好转义处理

4 别名名称不能使用 shell 关键字,不能和系统已有命令完全冲突,除非你就是想要覆盖原命令

二 常用基础操作清单

操作目的命令写法说明
创建临时别名alias ll='ls -l'当前终端立刻生效
列出全部别名alias打印所有已经定义别名
查询单个别名alias ll查看 ll 对应的原始命令
删除单个临时别名unalias ll当前会话移除 ll 别名
清除全部临时别名unalias a清空所有临时别名

三 高频实用别名示例

alias gs='git status'

alias gp='git pull'

alias gco='git checkout'

alias c='clear'

alias ..='cd ..'

alias ...='cd ../..'

alias net='ifconfig'

alias update='sudo apt update && sudo apt upgrade'

alias psg='ps aux | grep'

alias rm='rm -i'

补充说明 rm='rm -i' 这个别名会给删除命令增加交互确认,防止误删,但是脚本环境里面别名默认不生效,不会影响 shell 脚本执行

四 永久生效配置方法

临时别名关闭终端就消失,想要每次登录自动加载,需要写入 shell 配置文件

配置文件生效范围适用 shell
~/.bashrc当前登录用户bash
~/.bash_profile登录 shellbash
~/.zshrc当前登录用户zsh
/etc/bash.bashrc系统全部用户全局生效bash
/etc/profile.d/xxx.sh全局,推荐方式所有用户

操作步骤

第一步 打开用户配置文件,比如 vim ~/.bashrc

第二步 在文件末尾添加 alias 别名 =' 原始命令 '

第三步 保存退出

第四步 执行 source ~/.bashrc 重新加载配置,不用重启终端

第五步 输入 alias 验证别名是否加载成功

全局配置推荐放到 /etc/profile.d/ 目录新建 sh 文件,这样不用修改主配置文件,维护更干净,所有用户登录都会读取这个脚本

五 核心原理与优先级

shell 执行命令的时候,查找顺序是 别名 函数 内建命令 外部程序

也就是别名优先级最高,如果定义了和原命令同名的别名,输入这个名称会优先执行别名对应的内容

如果想要临时跳过别名,直接执行原始命令,可以在命令前面加反斜杠,例如 \rm

这个技巧非常重要,比如你设置了 rm 别名带确认,想强制删除不加确认,就使用 \rm

六 常见问题与坑点

1 等号两边加空格,报错 command not found

2 只写在~/.bash_profile,但是 bash 默认读取~/.bashrc,导致别名不加载,很多发行版登录 shell 会 source bashrc,如果没有就需要手动补充加载语句

3 别名里面使用管道 连续命令,没有正确加引号,执行报错

4 别名只在交互式 shell 生效,shell 脚本默认不会加载别名,这是很多人误以为别名失效的核心原因,脚本里面如果需要使用,需要开启 shopt s expand_aliases

5 全局配置修改之后,已经登录的旧终端不会自动加载,必须 source 或者重新登录

6 别名名称和系统命令冲突,造成原有命令行为改变,排查问题的时候可以用 type 命令查看 type ll 判断它是不是别名

七 进阶用法

1 别名支持带参数,但是基础 alias 本身不能直接接收动态参数,如果需要参数逻辑,推荐改用 shell 函数,函数可以接收位置参数,比 alias 更灵活

2 别名可以组合多条命令,用 && 连接,例如 alias backup='cd /data && tar zcvf backup.tar.gz ./'

3 查看命令类型 type 别名名,可以确认当前名称是别名还是函数还是外部程序

【常见问题】

问题 1 linux alias 临时别名重启终端为什么消失

回答 1 linux alias 创建的临时别名只存在当前 shell 会话,关闭终端之后会话销毁,linux alias 不会自动保存,想要永久保留 linux alias 需要写入 bashrc 或者 zshrc 配置文件,然后 source 加载。

问题 2 linux alias 为什么在 shell 脚本里面不生效

回答 2 linux alias 默认只对交互式终端生效,shell 脚本是非交互 shell,默认不加载别名,linux alias 如果需要在脚本生效,需要手动开启 expand_aliases 选项,一般推荐脚本改用函数替代 linux alias。

问题 3 linux alias 等号两边能不能加空格

回答 3 linux alias 语法要求等号左右不能加空格,如果添加空格会直接报错,linux alias 正确写法是 alias 别名 =' 命令 ',这是使用 linux alias 最常见新手错误。

问题 4 linux alias 和 unalias 是什么关系

回答 4 linux alias 用来创建别名,unalias 是配套命令,作用是删除当前会话已经创建的 linux alias 别名,unalias a 可以一次性清除全部 linux alias 临时别名。

问题 5 linux alias 想要跳过别名直接运行原命令怎么做

回答 5 已经设置 linux alias 同名别名之后,想绕过 linux alias 执行原始程序,可以在命令前面加反斜杠,例如 \rm,shell 就不会优先匹配 linux alias,直接调用原生 rm 命令。

【免责申明】

本文为 linux alias 命令基础教程,不同发行版 shell 配置文件路径和默认加载机制存在差异,修改系统全局配置前建议备份原文件,内容仅用于学习参考,生产环境操作请谨慎测试。