2017-08-18 21 views
1

現在のディレクトリにあるファイル.mything-rcを検索するコマンドを実行します。 cdを実行したときにそのファイルが存在するかどうかを確認したい。私が意味する

は、私のコマンドは、私が何かを自動的に実行したい、 Set-Locationを呼び出すために行くされていない場合は、ユーザコール Set-Location ... nvmは、それが自動的に実行されたとき .nvmrcとフォルダ内の cd、bashで何をするかのようなものコマンド nvm use ...

$pwdが変更されたことを検出して、自分のコマンドを実行するにはどうすればよいですか?

+0

'$ oldcwd = $ pwd.Path;セット・ロケーション...; if($ oldcwd -ne $ pwd.Path){...} '? –

+0

私のコマンドは 'Set-Location'を呼び出すつもりはないので、ユーザが' Set-Location'を呼ぶと自動的に何かを実行したいと思っています... 'cd'を実行したときに' '.nvmrc'のあるフォルダで自動的に' nvm use ... 'コマンドを実行します。 – BrunoLM

+8

'Set-Location'コマンドレットのラッパーやプロキシ関数を書いているようです。 [このScripting Guyのコラム](https://blogs.technet.microsoft.com/heyscriptingguy/2011/03/01/proxy-functions-spice-up-your-powershell-core-cmdlets/)をご覧ください。 –

答えて

0

あなたは、ディレクトリの変更をチェックして、あなたがやりたいように既存のprompt関数にカスタムScriptBlockを追加することもできます

$currentPrompt = (Get-Command prompt).ScriptBlock 
$newLogic = { $global:old = $global:new; $global:new = Get-Location; if($null -ne $global:old -and $global:new.Path -ne $global:old.Path){ Write-Host "Location changed from '$global:old' to '$global:new'." } } 
$newPrompt = [scriptblock]::Create("$currentPrompt; $newLogic") 
function prompt { & $newPrompt } 

注意をあなたはもちろん、より良いを選択する必要がありますので、これはグローバル変数に依存していること変数名はoldおよびnewより大きい。

関連する問題