这个问题很有趣,因为通常我会where.exe
在 Windows 上使用 来查找路径上程序的路径。但是,where
有一个选项dir
,/r
可以递归搜索路径。我不知道是否有模式或选项可以where
正确插入dir
或什么?它返回INFO: Could not find files for the given pattern(s).
。我想知道 是否dir
内置在 dll 或某个地方?无论如何,我不知道它在哪里。我有一个与 MinGWdir
不同的程序。但那不是原生的 Windows程序。dir.exe
C:\MinGW\msys\1.0\bin\dir.exe
dir
几个 PowerShell 单行命令仅返回空值。
PS> (Get-Command dir).Source
PS> Get-Command -Name dir
CommandType Name Version Source
----------- ---- ------- ------
Alias dir -> Get-ChildItem
https://stackoverflow.com/questions/62270559/where-is-programs-path-for-powershell-command
我还想知道这个地点是否出于安全目的而被隐藏,或者dir
它是否仅仅是如此古老和不重要,以至于仅仅存在于记忆中,或者别的什么?
答案1
该程序的路径是什么dir
?
它没有。
dir
是 shell 内部的几个命令之一cmd
。
完整列表请访问内部命令 - Windows CMD - SS64.com包括:
ASSOC
BREAK
,,,,,,,,,,,,,,,,,,,,,,,,,,,CALL
(Vista及以上CD/CHDIR
版本) ,,,,,,,,,,,,,,,,,,,,,,,,,, CLS
COLOR
COPY
DATE
DEL
DIR
DPATH
ECHO
ENDLOCAL
ERASE
EXIT
FOR
FTYPE
GOTO
IF
KEYS
MD/MKDIR,
MKLINK
MOVE
PATH
PAUSE
POPD
PROMPT
PUSHD
REM
REN/RENAME
RD/RMDIR
SET
SETLOCAL
SHIFT
START
TIME
TITLE
TYPE
VER
VERIFY
VOL
...
系统可能有一个同名的内部命令和一个外部命令。如果您调用了一个命令
DATE.exe
并希望优先运行该命令而不是内部DATE
命令,请使用文件的完整路径名,例如C:\utils\date.exe
,即使您当前的目录是C:\utils\
。
dir
因此,在您的情况下,您可以使用完整路径C:\MinGW\msys\1.0\bin\dir.exe
或运行 MingW 终端来运行 MingW 版本cmd
(然后dir
将运行 MingW 版本)。
请注意,正如您所注意到的,PowerShell
已经定义了一个dir
别名,以便用户可以在 PowerShell 中运行“dir”命令。
我还想知道这个地点是否出于安全目的而被隐藏,或者
dir
它是否仅仅是如此古老和不重要,以至于仅仅存在于记忆中,或者别的什么?
它本质上位于内存中,但只有在cmd
加载 shell 时才可以通过键入 来访问dir
。所有其他内部命令也是如此。
答案2
显然dir
(以及许多其他)是内置的cmd.exe
。
该命令通常作为命令行解释器(shell)中的内部命令实现。
https://en.wikipedia.org/wiki/Dir_(命令)
- 以下是列表内置命令。请注意页面底部的图例/键。https://ss64.com/nt/
COMMAND.COM 是 MS-DOS、Windows 95、Windows 98 和 Windows Me 的默认命令行解释器。对于 DOS,它也是默认用户界面。它还有一个额外的作用,即作为启动后通常运行的第一个程序(init 进程),因此负责通过运行 AUTOEXEC.BAT 配置文件来设置系统,并且是所有进程的祖先。
https://en.wikipedia.org/wiki/COMMAND.COM
命令提示符,也称为 cmd.exe 或 cmd,是 OS/2、[1] eComStation、ArcaOS、Microsoft Windows(Windows NT 系列和 Windows CE 系列)和 ReactOS[2] 操作系统的默认命令行解释器。