簡體   English   中英

為什么Powershell會在一個$ PATH中的每個目錄中搜索PSConsoleHostReadLine文件?

[英]Why does Powershell search every directory within one's $PATH for a PSConsoleHostReadLine file?

所有!

我注意到Powershell,或者更具體地說,在Powershell中粘貼和制表完成,在從v2升級到v3后,我的機器上的速度要慢得多。 我打開procmon以查看發生了什么,但發現每次嘗試選項卡完成或粘貼任何內容都會觸發Powershell以查找主題中提供的文件的各種排列。 我的$ PATH中有一些網絡文件夾,每次粘貼時都會瀏覽這些文件夾似乎不太理想。

看來這個文件允許Powershell更像Bash。 雖然這絕對是非常棒的,我期待在不久的將來濫用這個功能,有沒有辦法配置Powershell使它只嘗試在一個目錄中找到這個文件?

謝謝!

PSConsoleHostReadLine實際上是一個函數。 如果PoSH找不到方法,別名或其他任何可以使用該名稱執行的操作,則會返回到默認的“cooked”readline並進行編輯等。

要重新定義它,請創建一個函數:

function PSConsoleHostReadline {
    [Console]::Readline()
}

如上所述,此方法禁用編輯等。編寫自己的瘋狂魔法來做任何你想做的事情。

我猜它正在搜索所有額外的位置,因為Powershell 3具有“模塊自動加載”,它檢查ENV:PSModulePath中已知的所有位置的功能,並自動加載包含所述方法的模塊。

這是V3的疏忽。 V4只會搜索函數或別名 - 在查找PSConsoleHostReadline時它不會搜索外部exes。

如果您正在尋找類似體驗的bash - 請查看https://github.com/lzybkr/PSReadLine

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM