使用 whereis 找到 ls 二进制文件,但找不到 ll ,为什么?如何找到 ll 二进制文件的位置?
我使用“whereis”找到了“ls”二进制文件,但找不到“ll”
$ whereis ls
ls: /bin/ls /usr/share/man/man1/ls.1.gz
但找不到 ll:
$ whereis ll
ll:
答案1
ll
不是二进制文件而是ls -alF
命令的别名。
检查.bashrc
文件:
$ alias ll
alias ll='ls -alF'
答案2
作为kos 指出在评论中,你应该使用bash 内置type
命令与 不同,它还whereis
能够识别别名和 shell 内置命令:
$ type ll ls cd
ll is aliased to `ls -alF'
ls is hashed (/bin/ls)
cd is a shell builtin
(关于“hashed”的含义,请参阅unix.SE 上的这个问题。
答案3
许多用户喜欢快捷方式,这就是别名,它是用户的快捷选项。
脚本不应该使用快捷方式,这不是一个可移植的设计,正如您所发现的,这些别名命令并没有一致地定义。
最简单的答案可以满足您的需要,假设重复使用'll':
在脚本中,引用命令之前定义别名 ll='ls -l',然后“ll”将在整个脚本中起作用。
#!/bin/bash
alias ll='ls -alF'
... (rest of the script)
更好的答案:最好在脚本中使用完整命令,提供文档。切勿在其他人必须使用的脚本中使用别名。