【お知らせ】


<2019/04/24 追記>
本ページで紹介しているコマンドと同様な機能を持つ、WSL 環境で動作するコマンドを考えました。こちらもよければお試しください。

<2018/04/15 追記>
割り込み時のコマンド終了方法を見直しました。

<2016/02/12 追記>
Windows 10 からシンボリックリンクを作成する方法は、次のページが参考となります。本設定はこれを Cygwin から実現するために考えたものです。

<2015/08/31 追記>
オプション -e と -v をサポートしました。-v オプションを付けた際は終了するのみですが、Emacs の sudo-ext をサポートするために追加しています。sudo-ext については、次の設定を参照してください。

【本題】


Cygwin で sudo 的コマンドを使うための設定です。

次のページを参考としています。

次のリポジトリにある sudo スクリプトをコマンドパスが通ったフォルダ(~/bin 等)に格納し、必要であれば chmod +x sudo することにより実行可能とする。

sudo に -e オプションを付けた際に呼ばれる sudoedit は、次の設定を参照して作成してください。

以下、利用例です。
$ id
$ sudo id

$ sudo vim <filename>

$ sudo -e <filename>

$ sudo ping <hostname>

$ sudo winln -s <target> <link>

$ cocot sudo c:/Windows/system32/cmd /c mklink /d <link> <target>

$ alias symln='sudo CYGWIN=winsymlinks:nativestrict ln -s'
$ symln <target> <link>
後半3つのグループのコマンドは、すべて NTFS のシンボリックリンクを作成するためのコマンドです。最後のコマンドの使い方がお勧めです。

なお、Windows 10 1703 からは、NTFS シンボリックリンクを管理者権限なしで作成することも可能となりました。詳しくは以下を参照してください。


<変更履歴>
  • 2015/08/21 このページを作成した。
  • 2015/08/24 スクリプト内の PWD 変数もクォートをするように対策した。(パスにスペース等が含まれる時の対策。パスに \ が含まれることはないため、\ の置換は行っていません。)
  • 2015/08/24 function ではなくシェルスクリプトで動作させるとパイプが機能するようになったので、そのように説明を見直した。
  • 2015/08/25 PWD 変数や実行するコマンドの引数にシングルクォーテーションが入っている時の対策を追加した。
  • 2015/08/25 引数に \ が含まれていた時に \\ に置換するつもりが、引数をクォートした後に \ が付いたものまで置換していたので、これを改善した。
  • 2015/08/27 割り込みをサポートしてみた。
  • 2015/08/27 Windows のコマンドのパスの指定方法を変更した。(/c/... -> c:/..)
  • 2015/08/31 オプション -e と -v をサポートした。
  • 2015/12/21 Windows 10 での動作確認をしたところ、割り込み時に呼ばれる taskkill が正常に機能していなかったので、その対策を行った。
  • 2017/06/10 コマンド内の trap で再帰的に sudo を使っている箇所があるが、その箇所を "$0" を使いように置き換えた。
  • 2017/07/05 機能の変更はない、スクリプト内容の見直しを行った。
  • 2017/09/13 コマンドのパラメータなどに日本語を利用した際、正常に動作していなかった。その対策を行った。
  • 2018/04/15 割り込み時のコマンド終了方法を見直した。


最終更新:2019年11月03日 19:19