在 macOS 和 Linux 中,波浪号 `~`的区别

文章目录

1、在 macOS 和 Linux 中,波浪号 ~

在 macOS 和 Linux 中,波浪号 ~ 都表示当前用户的主目录(Home Directory)。尽管它们在不同的操作系统中表示相同的含义,但具体的路径和行为可能略有不同。以下是详细说明:

macOS

bash 复制代码
dgq@dgqdeMac-mini ~ % pwd
/Users/dgq

在 macOS 中,~ 通常表示当前用户的主目录,路径通常是 /Users/username,其中 username 是当前登录用户的用户名。例如,如果用户名是 john,那么 ~ 就表示 /Users/john。

示例
  • cd ~:切换到当前用户的主目录,例如 /Users/john。
  • cd ~/Documents:切换到当前用户的 Documents 目录,例如 /Users/john/Documents。

Linux

bash 复制代码
[root@localhost home]# pwd
/home
bash 复制代码
[root@localhost home]# ls
dgq

在 Linux 中,~ 同样表示当前用户的主目录,路径通常是 /home/username,其中 username 是当前登录用户的用户名。例如,如果用户名是 john,那么 ~ 就表示 /home/john。

示例
  • cd ~:切换到当前用户的主目录,例如 /home/john。
  • cd ~/Documents:切换到当前用户的 Documents 目录,例如 /home/john/Documents。

区别总结

  1. 路径前缀:

    • macOS :主目录路径通常是 /Users/username。
    • Linux :主目录路径通常是 /home/username。
  2. 系统默认路径:

    • macOS :默认的用户主目录位于 /Users 目录下。
    • Linux :默认的用户主目录位于 /home 目录下。
  3. 符号链接和别名:

    • macOS 和 Linux 都支持符号链接和别名,但具体路径可能因系统配置而异。

其他注意事项

  • 环境变量 :在 shell 脚本中,可以使用 $HOME 环境变量来表示当前用户的主目录。例如:

    sh 复制代码
    cd $HOME
  • 多用户系统 :在多用户系统中,每个用户的主目录路径都会根据用户名有所不同。例如,用户 alice 的主目录可能是 /Users/alice(macOS)或 /home/alice(Linux)。

示例

假设你有一个用户 john,下面是两个操作系统中的一些命令示例:

macOS
sh 复制代码
# 切换到 john 的主目录
cd ~

# 查看 john 的主目录内容
ls ~

# 创建一个新文件在 john 的 Documents 目录下
touch ~/Documents/newfile.txt
Linux
sh 复制代码
# 切换到 john 的主目录
cd ~

# 查看 john 的主目录内容
ls ~

# 创建一个新文件在 john 的 Documents 目录下
touch ~/Documents/newfile.txt

结论

尽管 macOS 和 Linux 在文件系统路径前缀上有所不同,但 ~ 这个符号在两个操作系统中都表示当前用户的主目录。这使得跨平台的脚本编写更加方便,因为 ~ 的含义在大多数类 Unix 系统中是一致的。

2、root 用户的主目录通常是 /root

bash 复制代码
[root@localhost ~]# pwd
/root

你提到的 [root@localhost ~]# pwd 显示的结果是 /root,这是因为你当前是以 root 用户身份登录的。在 Linux 系统中,root 用户的主目录通常是 /root。

解释

  1. root 用户:

    • root 是系统的超级用户,拥有最高的权限。
    • root 用户的主目录默认是 /root。
  2. 普通用户:

    • 普通用户的主目录通常位于 /home 目录下。
    • 例如,如果用户名是 john,那么 john 的主目录通常是 /home/john。

示例

假设你有两个用户:root 和 john。

  • root 用户:

    sh 复制代码
    [root@localhost ~]# pwd
    /root
  • john 用户:

    sh 复制代码
    [john@localhost ~]# pwd
    /home/john

切换用户

如果你想要切换到另一个用户,可以使用 su 或 sudo 命令。

使用 su 命令
sh 复制代码
[root@localhost ~]# su - john
[john@localhost ~]# pwd
/home/john
使用 sudo 命令
sh 复制代码
[root@localhost ~]# sudo -u john bash
[john@localhost ~]# pwd
/home/john

验证当前用户

你可以使用 whoami 命令来查看当前登录的用户:

sh 复制代码
[root@localhost ~]# whoami
root

总结

  • root 用户的主目录 :/root
  • 普通用户的主目录 :通常在 /home/username

所以,当你看到 [root@localhost ~]# pwd 输出 /root 时,这表明你当前是以 root 用户身份登录的。如果你想切换到其他用户,可以使用 su 或 sudo 命令。

相关推荐
LHICOD8 分钟前
Linux-2
java·linux·后端·jar·vmware·svm·vm
余额瞒着我当琳14 分钟前
Linux初识:Linux的历史,计算机的发展脉络,发行版本,选购云服务器,安装Xshell,第一次连接,基础命令指南
linux·运维·服务器
时间售卖铺32 分钟前
Docker实战:一键部署轻量级容器
运维·docker·云原生
垆边人似月.36 分钟前
RDMA 文件传输踩坑(四):从固定延时改造为 READY/ACK 协议
linux·服务器·网络
水饺编程38 分钟前
第2章:Linux 基础,制作【.tar.xz】压缩包文件
linux·c语言·汇编
山乐1913142 分钟前
麒麟系统,安装Nginx并配置https证书
运维·nginx·https
月落汀兰1 小时前
拒绝配置写死镜像!K8s 存储卷与配置管理,PV/PVC、ConfigMap、Secret 实战避坑指南
运维·kubernetes
阿里云基础软件1 小时前
Agent 任务提速 10.71%,内存占用降低 21.60%|Alibaba Cloud Linux 4 重大发布
java·linux·人工智能·操作系统·agent
服务器硬件项目经理1 小时前
《超节点修仙录》· 第一卷·炼气期【第04话】 超节点 vs 普通服务器——不就是多插了几张卡吗?
运维·服务器·人工智能·嵌入式硬件·深度学习·机器学习
m0_743697592 小时前
DNS的反向域名的相关问题
linux