プラグイン:
説明
タイトル通りです。
scoop status
のように実行しても結果が表示されると同時に終了するので困ってしまいます。
なぜなのか?
以前にこちらで説明したとおり、
scoop
コマンドは実行ファイルを指すものではなく、
エイリアスであることが関係していそうです。
PPbでscoop
を実行すると大まかに次のような処理が発生します。
%PATH%\scoop
を探すpath\to\Scoop\shims\
にscoop
を発見- cmd.exeで
path\to\Scoop\shims\scoop
を実行
PPbは渡されたファイルパスをOS側の拡張子判別で処理しているようです。
E_crの拡張子判別はPPcから渡されたパスを対象としているのでこの場合は対象になりません。
ではPPb上に scoop status は出力できないのか?
path\to\Scoop\shims配下には3つのscoopファイルがあります。
Scoop\shims
├── scoop
├── scoop.cmd
├── scoop.ps1
*ppb -k scoop
はcmd.exe
が起動しますが他のパスを指定するとどうなるか試してみましょう。
*ppb -k scoop.cmd
PPb上にscoopコマンドの実行結果が出力される*ppb -k scoop.ps1
メモ帳が開きscoop.ps1の内容が出力される
どうやら、name.cmd
はPPbで直接実行されるようです。
scoop.cmd status
と記述することでPPb上に出力されることがわかりました。やったね!
でもやっぱり scoop status を実行したい
scoop status
をPPb上で実行するには、path\to\Scoop\shims\scoop
が邪魔になります。
scoop
のエイリアスにpath\to\Scoop\shims\scoop.cmd
を設定してみてはどうか?
Scoop自身が環境変数SCOOP
を設定しているために問題がでます。
結論としては、path\to\Scoop\shims\scoop
をpath\to\Scoop\shims\scoop.backup
などに
改名することでscoop status
をPPb上で直接実行できます。
ただし、path\to\Scoop\shims\scoop
がどのような使われ方をしているのかわかりませんし、
Scoopのアップデート時には元に戻ると思います。
path\to\Scoop\shims\scoopの中身はsh/bash用のシェルスクリプトになっています
というわけで直接実行は諦めてcmd /K scoop status
、powershell -Command scoop status
とするか、PPb以外のシェル上で実行するなどの方法を取りましょう。
どうしてもPPbで実行したいときのためにscoop.cmd
を憶えておくとよいと思います。