Quantcast
Channel: Bashタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 2722

(Windows) Bashが管理者として実行されているか判定する(ついでにプロンプトに表示する)

$
0
0

Windowsのコマンドライン環境としてCmder とそれに同梱されているBashで作業をしていて,タイトルにあることがやりたくなったのでメモ代わりに初投稿です.

方法

バッチファイルでの方法(参考: https://commandprompt.noyokan.com/command/ck_admin.html, https://amksystem.com/cmd/cmd7/) と同様にWindowsの管理者権限を必要とするコマンドの返り値や出力で判定できる.(正規の方法はないんだろうか?)

今回はopenfilesを使ってみる.外部コマンドなのでbashからでも呼べる.

openfiles > /dev/null 2>&1
IS_ADMIN=$?

これでIS_ADMINに管理者権限の有無が入る.(若干紛らわしいが管理者として実行されている場合が0
$?がバッチファイルでいう%ERRORLEVEL%相当の特殊変数.

プロンプトに表示する

操作している端末が管理者として実行されているのかすぐ分かるように表示したかったというのが今回の動機.
管理者として実行されている場合にはプロンプトにその旨を表示するようにする.
.bashrcに次を書く.

openfiles > /dev/null 2>&1
IS_ADMIN=$?

_PS_ADMIN=''
if [ $IS_ADMIN -eq '0' ]; then
        _PS_ADMIN='(as Admin)'
fi

PS1='\[\033]0;$MSYSTEM:${PWD//[^[:ascii:]]/?}\007\]\[\033[32m\]\u@\h \[\033[33m\]\w\[\033[36m\]`__git_ps1`\[\033[0m\] \033[31m$_PS_ADMIN\033[0m\n'

これで管理者として実行されている場合のみデフォルトのプロンプトに加えて赤字で(as Admin)と表示されるようになる.

おわりに

もっとましな方法やまともな書き方があったらご教授ください.


Viewing all articles
Browse latest Browse all 2722

Trending Articles