「Windowsでエクスプローラーからフォルダを各種ターミナルで開く」の版間の差分
Notion-MW |
Notion-MW |
||
(同じ利用者による、間の2版が非表示) | |||
89行目: | 89行目: | ||
<li>[https://learn.microsoft.com/en-us/windows/win32/procthread/environment-variables Environment Variables - Win32 apps | Microsoft Learn]では「<code>=</code>は環境変数に使えない」と書かれていて、ダイアログからでも設定はできないが、レジストリだと無理やり設定できる。 | <li>[https://learn.microsoft.com/en-us/windows/win32/procthread/environment-variables Environment Variables - Win32 apps | Microsoft Learn]では「<code>=</code>は環境変数に使えない」と書かれていて、ダイアログからでも設定はできないが、レジストリだと無理やり設定できる。 | ||
<ul> | <ul> | ||
<li>ユーザー環境変数に設定する分にはとりあえず問題なさそうだが、システム環境変数にレジストリから<code>=</code>(と、<code>=</code>を名前に含むいくつかの変数。どれが原因かは正確にはわからない)を無理やり追加したら<strong>0xc000021のブルースクリーンでWindowsが起動しなくなった</strong> | <li>ユーザー環境変数に設定する分にはとりあえず問題なさそうだが、システム環境変数にレジストリから<code>=</code>(と、<code>=</code>を名前に含むいくつかの変数。どれが原因かは正確にはわからない)を無理やり追加したら<strong>0xc000021のブルースクリーンでWindowsが起動しなくなった</strong>(Linuxからchntpwで該当の変数を全て削除したら治った)のでこれはやってはいけない。</li></ul> | ||
</li> | </li> | ||
<li>ちなみに、<code>=</code>や<code>%</code>はUnix側では特殊文字ではないので、printfとの適用順はあまり気にする必要はない。</li></ul> | <li>ちなみに、<code>=</code>や<code>%</code>はUnix側では特殊文字ではないので、printfとの適用順はあまり気にする必要はない。</li></ul> | ||
199行目: | 199行目: | ||
<p>カレントディレクトリをコンソールに出力する。(ちなみにpwdの由来はprint working directoryなのでそれに倣った)</p></li></ul> | <p>カレントディレクトリをコンソールに出力する。(ちなみにpwdの由来はprint working directoryなのでそれに倣った)</p></li></ul> | ||
<span id="注意:- | <span id="注意:-当初は後述のnoworkingdirectoryを知らなかったので1の方法に頼っていたが実際には2の方法のほうが簡明なのでそちらを使うことを勧める1と11は残しておくが読む必要はあまりない"></span> | ||
== 注意: 当初は後述のNoWorkingDirectoryを知らなかったので1.の方法に頼っていたが、実際には2.の方法のほうが簡明なので、そちらを使うことを勧める。1. | == 注意: 当初は後述のNoWorkingDirectoryを知らなかったので1.の方法に頼っていたが、実際には2.の方法のほうが簡明なので、そちらを使うことを勧める。1.(と1.1.)は残しておくが、読む必要はあまりない。 == | ||
{{UnderConstruction|Windowsでエクスプローラーからフォルダを各種ターミナルで開く}} | |||
<span id="1標準入力から受け取る場合"></span> | <span id="1標準入力から受け取る場合"></span> | ||
409行目: | 409行目: | ||
<p><code>sh -c "IFS=;echo $*" -- "%V</code></p> | <p><code>sh -c "IFS=;echo $*" -- "%V</code></p> | ||
<ul> | <ul> | ||
<li>最後が<code>"%V</code>と閉じられていないのはミスではなく、<code>"%V"</code>としてしまうと<code>C:\</code>のときに<code>C:"</code> | <li>最後が<code>"%V</code>と閉じられていないのはミスではなく、<code>"%V"</code>としてしまうと<code>C:\</code>のときに<code>C:"</code>が渡されてしまうのでそれを避けるためである(これはかなりトリッキーなのでもう少し真面目にやってもいいかなとは思う)。</li> | ||
<li>UNCパスの最初の<code>\\</code>が<code>\</code>に変わってしまう(手元では、Cygwinの場合は<code>\\?\</code>のみで発生している?)という問題があり、適宜置換する必要がある。</li></ul> | <li>UNCパスの最初の<code>\\</code>が<code>\</code>に変わってしまう(手元では、Cygwinの場合は<code>\\?\</code>のみで発生している?)という問題があり、適宜置換する必要がある。</li></ul> | ||
</li></ul> | </li></ul> | ||
468行目: | 468行目: | ||
<p><code>"C:\Program Files\Git\git-bash.exe" -c "IFS=;cd $(echo $*|/bin/sed 's/\\\\/\\\\\\\\/'|/bin/cygpath -f -);exec bash" -- "%V</code></p> | <p><code>"C:\Program Files\Git\git-bash.exe" -c "IFS=;cd $(echo $*|/bin/sed 's/\\\\/\\\\\\\\/'|/bin/cygpath -f -);exec bash" -- "%V</code></p> | ||
<ul> | <ul> | ||
<li><p> | <li><p>ちなみに、Git Bashのインストーラにより設定される「Git Bash Here」メニューでは以下のようになっている。</p> | ||
<p><code>"C:\Program Files\Git\git-bash.exe" "--cd=%v."</code></p> | <p><code>"C:\Program Files\Git\git-bash.exe" "--cd=%v."</code></p> | ||
<p>これは、特殊文字にはすべて対応しているが、(NoWorkingDirectoryをつけたとしても)<code>\\?\</code>で始まるパスではうまくいかない。最後の「.」はよくわからないがこれを付けておくと<code>--cd</code>がうまくやってくれるっぽい。</p></li></ul> | <p>これは、特殊文字にはすべて対応しているが、(NoWorkingDirectoryをつけたとしても)<code>\\?\</code>で始まるパスではうまくいかない。最後の「.」はよくわからないがこれを付けておくと<code>--cd</code>がうまくやってくれるっぽい。</p></li></ul> |