Mac命令行设置别名
本文介绍,Mac命令行设置别名
本地环境
macOS Sonoma 14.5 (23F79)
终端版本2.14 (453)
检查当前使用的shell类型
/bin/zsh
macx@MacXdeMac ~ % echo $SHELL
/bin/zsh
macx@MacXdeMac ~ % echo $0
-zsh
设置配置文件
在 zsh 中,通常使用
~/.zshrc
文件来配置别名和其他 shell 设置
vim ~/.zshrc
alias ll='ls -la'
配置生效或重新打开shell
添加完别名后,记得运行以下命令重新加载配置文件,使更改生效; 或重新打开shell
source ~/.zshrc
bash shell的其他配置文件
在 Bash shell 中,常用的配置文件有以下几个:
~/.bashrc
:这是用户级别的配置文件,在每次启动交互式非登录 shell 时读取和执行。它通常用于设置别名、环境变量和函数等。~/.bash_profile
:这是用户级别的配置文件,在每次启动登录 shell 时读取和执行。它通常用于初始化环境变量和运行其他配置脚本。如果该文件存在并且被读取,那么通常~/.bashrc
会在其中被调用。~/.bash_logout
:这是用户级别的配置文件,当用户退出登录 shell 时执行。/etc/bashrc
(或/etc/bash.bashrc
):这是系统范围的配置文件,在每次启动交互式 shell 时读取和执行。系统管理员可以在此处设置全局别名和环境变量等。/etc/profile
:这是系统范围的配置文件,在每次启动登录 shell 时读取和执行。它通常用于设置全局环境变量和运行其他全局配置脚本。
通常,你会在
~/.bashrc
或~/.bash_profile
中设置个人的别名和其他配置。对于非登录 shell,例如在终端模拟器中启动的 shell,~/.bashrc
更为常用,而~/.bash_profile
常用于登录 shell,如通过 SSH 登录的远程会话。
用户开启root
权限, 执行shell 不用输出密码
# 查询当前用户
whoami
macx
# 编辑权限
sudo vim /etc/sudoers
# 或者
sudo visudo
# 添加下列内容
# %admin ALL=(ALL) ALL
macx ALL = (ALL) NOPASSWD: ALL
sudoers
文件简介
/etc/sudoers
文件是配置sudo
权限的主要配置文件,它控制用户和组在系统上执行命令时的权限。编辑该文件时,建议使用visudo
命令来确保文件格式正确,因为visudo
会进行语法检查,避免配置错误。以下是sudoers
文件的主要配置格式和说明:
基本语法
用户权限配置:
user host = (run-as) commands
- user:指定具有特权的用户,可以是用户名或
%groupname
(组名,需加上%
)。 - host:指定允许运行这些命令的主机名,通常使用
ALL
来表示任意主机。 - run-as:指定允许以哪些用户身份运行命令,通常为
ALL
或特定的用户名。 - commands:指定允许执行的命令列表,可以是命令路径或
ALL
。
例子:
alice ALL=(root) /bin/kill, /bin/ls
允许用户
alice
在所有主机上以root
身份运行/bin/kill
和/bin/ls
命令。- user:指定具有特权的用户,可以是用户名或
别名(Alias):
别名用于简化配置,可以定义用户、主机、运行身份和命令的别名。用户别名 (
User_Alias
):User_Alias ADMINS = alice, bob
主机别名 (
Host_Alias
):Host_Alias WEBHOSTS = web1, web2
运行身份别名 (
Runas_Alias
):Runas_Alias OPERATORS = apache, nginx
命令别名 (
Cmnd_Alias
):Cmnd_Alias SHUTDOWN = /sbin/shutdown, /sbin/reboot
例子:
ADMINS WEBHOSTS=(OPERATORS) SHUTDOWN
允许
ADMINS
用户在WEBHOSTS
主机上以OPERATORS
身份运行SHUTDOWN
命令。默认设置(Defaults):
Defaults env_reset
Defaults
关键字用于设置 sudo 的默认行为。env_reset
是一个常用设置,它会清除大部分环境变量,以减少安全风险。NOPASSWD:
指定用户在运行命令时不需要输入密码:alice ALL=(ALL) NOPASSWD: /usr/bin/apt-get
允许用户
alice
在所有主机上以任何用户身份执行/usr/bin/apt-get
命令而无需密码。
注释
#
用于添加注释。例如:
# 这是一个注释
示例
# 允许所有用户在所有主机上以任何身份运行所有命令
ALL ALL=(ALL) ALL
# 定义用户别名和命令别名
User_Alias ADMINS = alice, bob
Cmnd_Alias NETWORKING = /sbin/ifconfig, /usr/bin/netstat
# 允许 ADMINS 用户在所有主机上以 root 身份运行 NETWORKING 命令
ADMINS ALL=(root) NETWORKING
注意事项
- 权限:
/etc/sudoers
文件的权限应设置为 0440(只读),只有 root 用户和sudo
组的成员才有权限修改该文件。 - 安全:在设置命令时,要确保不授予不必要的特权,特别是不要将用户或命令设置为
NOPASSWD
,除非绝对必要。
sudoers
配置错误,导致无法使用sudo命令
按以下步骤操作
- 系统设置
- 用户与群组
- 网络账户服务器 编辑
- 打开目录实用工具
- 右下角 --> 点此按钮以防止再次更改
- 编辑 --> 启用
Root
用户 , 更改Root
密码
打开终端,输入以下命令
macx@macx:~# su root
macx@macx:~# vim /etc/sudoers