Humanity

Edit the world by your favorite way

cygwinで複数のユーザアカウントを管理する

ユーザ作成

ここの一番下を参照。
事前に
スタート -> コントロールパネル -> ユーザアカウント
でユーザを作っておく。

複数のユーザにログイン

どうせならWindowsでユーザを切り替えることなく
一人のユーザから色んなcygwinのユーザにログイン(?)したいと思ったのでcygwin.batを変更してみた。
(使う人は最初のcygdriveとcygdirだけ自分の環境に合わせて変更してください)


動作としては最初に

user:

とプロンプトが出るのでそこにログインしたいユーザ名を入れてください。
何も入れなければWindowsでの現在のログイン名(USERNAME)が使われます。


でもこれだとHOMEは変更できても
USERやUSERNAMEは変更できないので
そういう環境変数を見るプログラムは誤作動するかもしれない。


ただ自分は.vimとか.screenrcとか.sshとか
そういう設定ファイル(orフォルダ)を移行できればいいと考えてたので今のところ問題は起こってない。


あとユーザ(のホームディレクトリ)を新しく追加したい時は、
コマンドプロンプトから

cygwin.bat create

とするとホームディレクトリの存在確認をパスするようになるので
プロンプトが出たら追加したいユーザの名前を入れてください。


@echo off


rem ### 環境に合わせて変更
set cygdrive=G:
set cygdir=G:\cygwin


rem ### コマンドプロンプトから入っても
rem ### 直前のディレクトリを復活させる
pushd .
rem ### 端末の色を変える(あんまり変わらない...)
color 0F


setlocal

set /p foo=user: <nul
set /p usr=
if not defined usr  set usr=%USERNAME%
title Cygwin - %usr%

set HOME=%cygdir%\home\%usr%
rem ### ユーザを作るならスキップ
if "%1" == "create"   goto skipcheckdir

if not exist %HOME% (
    echo no home directory for %usr%.
    echo.
    pause
    cls
    goto endofbatch
)

:skipcheckdir


rem ### 環境変数変更
rem ### set USER=%usr%
rem ### set USERNAME=%usr%
rem ### set CYGWIN=binmode nontsec tty
set CYGWIN=tty notitle glob
rem ### set PATH=
set MAKE_MODE=unix
set PAGER=less
set JLESSCHARSET=japanese-sjis
set TERM=cygwin
set TERMCAP=cygwin
set TERMINFO=cygwin
set TMP=C:\cygwin\tmp
set TEMP=C:\cygwin\tmp
set TMPDIR=C:\cygwin\tmp
set TZ=JST-09
set LANG=ja_JP.sjis
rem ### WARNING: terminal is not fully functionalって出る
set LESS=MrXEd

rem ### ログイン
cls
%cygdrive%
chdir %cygdir%\bin
bash --login -i

endlocal


:endofbatch
color
popd