我的别名正在运行什么命令?

我的别名正在运行什么命令?

问题一再建议,要找出可执行文件的位置,应该运行command -v file.

我现在尝试command -v ls在几个不同的系统上运行,并且不断alias ls='ls --color=auto'(总是在 Bash 中)。

我有三个问题:

  1. 我缺少什么?它有何command -v ls帮助?

  2. 鉴于它which不能正常工作(根据链接问题的评论和答案)并假设我没有遗漏问题 1 中的任何内容并且确实command -v ls有帮助,我如何知道哪个ls实际上运行了?

  3. 解决这个问题的 POSIX 兼容方法是什么?我的例子是在 Bash 中,但我希望有一个可移植的解决方案。我知道关于type -P.

答案1

我相信我已经找到了所有三个问题的答案。一旦你看到它就很明显,但对我来说并不明显根本不,因此提出这个问题。

  1. 删除别名
  2. 跑步command -v。 (看POSIX在此)。
  3. 现实,如果这是一个人的愿望。

对于那些可能不知道如何执行此操作的人来说,下面是一个具体示例,我将这个过程应用于ls.

$ command -v ls
alias ls='ls --color=auto'
$ unalias ls                   # Step 1 above
$ command -v ls                # Step 2 above
/bin/ls
$ alias ls='ls --color=auto'   # Step 3 above
$ command -v ls
alias ls='ls --color=auto'

相关内容