关于两条常用命令的新手/菜鸟问题

不知为何我在 Konsole 输入:sudo shutdown -k now ‘will reboot now!’
再切换到已经登陆另一个账号的 tty1 发现啥提示也没有,从 tty1 执行完后回 tty7 也啥都没看到,本来其它已登录的用户应该能看到 will reboot now 这句话的才对,但是我又不明白我把这命令哪里输错了。

以及我在命令行里输入 sh 然后按 Tab 自动补全,发现没有显示 shutdown,只显示了下面这些,这是为啥阿,按理来说自动补全不应该会显示全部的命令吗?
sh sha256sum shar shopt showexternal showpicture
sha1pass sha384sum sharesec showaudio showkey showrgb
sha1sum sha512sum shasum showchar shownonascii shred
sha224sum shade-jar shift showconsolefont showpartial shuf

可能因为 shutdown 是位于 /usr/sbin/shutdown所以作为一般用户不能调用,自然也无法补全。

你可以试试看 cnf 查看这个某个命令的具体情况,比如:

-> % cnf shutdown            
Absolute path to 'shutdown' is '/usr/sbin/shutdown', so running it may require superuser privileges (eg. root).

确实,我登陆了 root 用户以后就能补全了,然后我又发现 type 命令也需要登陆 root 以后才能查找像 fdisk,shutdown,fsck 之类的命令,但 whereis 命令可以直接查到它们还不需要 root 权限,不知道这是为啥。

而且用 tab 补全之前输入个 sudo 再按 tab 发现就可以补全 shutdown 这些命令了,但这招对 type 不管用。

type 是一个 shell built-in command 而 whereis 是一个位于 /usr/bin 的外部程序。

1赞