プラグイン:
説明
タイトル通りです。
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.cmdPPb上に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を憶えておくとよいと思います。