Linux logname命令介绍
logname是一个英文单词,它的全称是login name,意思是登录名。它是一个用来显示当前用户的登录名的命令。它通常会从系统维护的文件(通常是/var/run/utmp或/etc/utmp)中获取信息。它的语法非常简单,只有一个可选的参数。它的用途是在需要知道当前用户的登录名的情况下使用,比如在写脚本或配置文件时,或者在需要区分不同用户的场景下。
Linux logname命令适用的Linux版本
logname命令是一个标准的Linux命令,它适用于几乎所有的Linux发行版,包括Ubuntu, Debian, CentOS, Fedora, Red Hat, SUSE, Arch Linux等。如果你的Linux系统没有安装logname命令,你可以使用以下命令来安装它:
- 对于基于Debian的系统,如Ubuntu,你可以使用apt-get命令来安装:
[linux@bashcommandnotfound.cn ~]$ sudo apt-get install coreutils
- 对于基于Red Hat的系统,如CentOS,你可以使用yum命令来安装:
[linux@bashcommandnotfound.cn ~]$ sudo yum install coreutils
- 对于基于Arch的系统,如Manjaro,你可以使用pacman命令来安装:
[linux@bashcommandnotfound.cn ~]$ sudo pacman -S coreutils
Linux logname命令的基本语法
logname命令的基本语法如下:
logname [OPTION]
其中,OPTION是一个可选的参数,它可以是以下之一:
- --help:显示在线帮助信息。
- --version:显示版本信息。
如果没有指定任何参数,logname命令会打印当前用户的登录名。
Linux logname命令的常用选项说明
logname命令只有两个选项,它们的说明如下:
选项 | 说明 |
---|---|
--help | 显示在线帮助信息。 |
--version | 显示版本信息。 |
Linux logname命令的实例
下面是一些使用logname命令的实例:
- 显示当前用户的登录名:
[linux@bashcommandnotfound.cn ~]$ logname
linux
- 显示logname命令的帮助信息:
[linux@bashcommandnotfound.cn ~]$ logname --help
Usage: logname [OPTION]...
Print the name of the current user.
--help display this help and exit
--version output version information and exit
GNU coreutils online help: <https://www.gnu.org/software/coreutils/>
Full documentation <https://www.gnu.org/software/coreutils/logname>
or available locally via: info '(coreutils) logname invocation'
- 显示logname命令的版本信息:
[linux@bashcommandnotfound.cn ~]$ logname --version
logname (GNU coreutils) 8.32
Packaged by Gentoo (8.32 (p1))
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Richard Mlynarik and David MacKenzie.
- 在sudo模式下使用logname命令,显示原始用户的登录名,而不是root:
[linux@bashcommandnotfound.cn ~]$ sudo logname
linux
- 与其他类似的命令(如whoami, id, echo $USER等)进行比较,显示它们的不同:
[linux@bashcommandnotfound.cn ~]$ logname
linux
[linux@bashcommandnotfound.cn ~]$ whoami
linux
[linux@bashcommandnotfound.cn ~]$ id
uid=1000(linux) gid=1000(linux) groups=1000(linux),10(wheel)
[linux@bashcommandnotfound.cn ~]$ echo $USER
linux
[linux@bashcommandnotfound.cn ~]$ sudo logname
linux
[linux@bashcommandnotfound.cn ~]$ sudo whoami
root
[linux@bashcommandnotfound.cn ~]$ sudo id
uid=0(root) gid=0(root) groups=0(root)
[linux@bashcommandnotfound.cn ~]$ sudo echo $USER
linux
可以看到,logname命令在sudo模式下仍然显示原始用户的登录名,而其他命令则显示root或者不变。这是因为logname命令从系统文件中读取登录名,而其他命令则从环境变量或者进程信息中获取。
Linux logname命令的注意事项
- logname命令只能显示当前用户的登录名,不能显示其他用户的登录名。如果想要查看其他用户的登录名,可以使用其他命令,如who, w, last等。
- logname命令只能显示登录名,不能显示其他信息,如用户ID, 组ID, 主目录, shell等。如果想要查看这些信息,可以使用其他命令,如id, finger, getent等。
- logname命令的输出可能与其他命令的输出不一致,比如在使用su或者ssh等命令切换用户时,logname命令仍然显示原始用户的登录名,而其他命令则显示切换后的用户的登录名。这是因为logname命令从系统文件中读取登录名,而其他命令则从环境变量或者进程信息中获取。
- 如果系统文件被损坏或者不存在,logname命令可能无法正常工作,会显示错误信息,如:
[linux@bashcommandnotfound.cn ~]$ logname
logname: no login name
- 如果系统没有安装logname命令,会显示错误信息,如:
[linux@bashcommandnotfound.cn ~]$ logname
bash: logname: command not found
此时,可以使用上面提到的方法来安装logname命令。
评论区