S-JIS[2008-10-17/2016-11-26] �ύX����

Cygwin

Cygwin(�V�O�E�B��)�́AWindows���UNIX�̊‹���񋟂���\�t�g�B
Windows�i���R�}���h�v�����v�g�j�ォ��UNIX�̃R�}���h�����s���邱�Ƃ��o����B


�T�v

Cygwin�ł�Windows�Ŏg����iUNIX�֐��́j�w�b�_�[�t�@�C���⃉�C�u�����[�t�@�C���ނ��񋟂���Ă���A
UNIX�̊֐����g�����R�[�f�B���O�����ăR���p�C�����邱�Ƃɂ��AWindows�p�̎��s�t�@�C���iexe�j������B
�܂��A�������č��ꂽ�R�}���h�i���s�t�@�C���j�����s����ׂ�DLL�i��\��cygwin1.dll�j���񋟂���Ă���B

�����̋@�\��p����UNIX�̊e�\�t�g�̃R���p�C�����s����Windows�̎��s�t�@�C��������Ă��āA���ꂪCygwin�̈ꕔ�Ƃ��Ē񋟂���Ă���̂ŁACygwin���C���X�g�[�������UNIX�̃R�}���h���g����悤�ɂȂ�B


�C���X�g�[��

  1. Cygwin�̃T�C�g����setup-x86_64.exe���_�E�����[�h����B[/2016-04-27]
  2. �_�E�����[�h���Ă���setup-x86_64.exe�����s����ƁA�uCygwin Setup�v���N������B
    �i����́A�C���^�[�l�b�g����Cygwin�̎��̂�I���E�_�E�����[�h�E�C���X�g�[��������́j
  3. �uRoot Directory�v�ɂ�Cygwin���C���X�g�[������f�B���N�g���[���w�肷��B�f�t�H���g�́uC:\cygwin�v�B
  4. �uLocal Package Directory�v�ɂ́A�_�E�����[�h����A�[�J�C�u���i�[����f�B���N�g���[���w�肷��B
  5. �~���[�T�C�g���F�X����̂ŁA�K���ɑI�ԁB
    �܂��A�[�J�C�u�̈ꗗ���_�E�����[�h�����̂ŁA������Ƒ҂B
  6. �uSelect Packages�v�ŁA�_�E�����[�h�i�C���X�g�[���j����\�t�g�i�p�b�P�[�W�j��I������B���߂Ă̏ꍇ�̓f�t�H���g�̂܂܂ł����Ǝv���B
  7. �u���ցv�{�^���Ń_�E�����[�h�E�C���X�g�[�������B
    �f�t�H���g�ł����������Ȑ��̃\�t�g���C���X�g�[�������̂ŁA1�`2���Ԃ͂�����B

�lj��C���X�g�[��

�ォ��lj��C���X�g�[���i��\�t�g���̃A���C���X�g�[���j�����邱�Ƃ��o����B
�Ă�setup-x86_64.exe�����s����΂��������B

�ȉ��̂悤�ȃ\�t�g�̓f�t�H���g�ł͓����Ă��Ȃ��B

�\�t�g Select Packages �R�}���h�� ���� ���l �X�V��
cron Admin cron �@ �@ �@ �@
C�R���p�C���[ Devel gcc-core cc
gcc
gcc.exe ��Linux����gcc �@
C++ Devel gcc-g++ �@ �@ ��Linux����g++ �@
make Devel make make make.exe �@ 2011-08-08
vi Editor vim vi
view
vim.exe �@ �@
OpenSSH Net openssh ssh ssh.exe ���C���X�g�[����̐ݒ� 2010-02-18
ksh Shells pdksh ksh pdksh.exe �@ �@
tcsh Shells tcsh csh
tcsh
tcsh.exe �@ �@
logger System
Text
Utils
util-linux logger logger.exe �f�t�H���g�ł́AWindows�̃C�x���g���O�ɏo�͂����B 2008-11-23

�������̃J�e�S���[�ɂ���ꍇ�́A�ǂ̃J�e�S���[����I��ł������Ǝv����B

�~�����R�}���h���ǂ̃p�b�P�[�W�ɓ����Ă���̂��́Acygcheck -p���g���ĒT�����Ƃ��o����B[2008-11-23]
��U�C���X�g�[�������\�t�g���ǂ̃p�b�P�[�W�ɓ����Ă������̂Ȃ̂��́Acygcheck -f���g���Ċm�F�ł���B

�Q�l


Unkown+User

Windows10����ꂽ�̂�OS�ăC���X�g�[���������B[2016-11-26]
Cygwin���C���X�g�[�����Ă���D�h���C�u�͖����������̂ŁACygwin�̃f�B���N�g���[�͂��̂܂܎g����c�Ǝv������ACygwin�̃C���X�g�[���i�A�b�v�f�[�g�j�͂���K�v���������i�łȂ���bash���N���ł��Ȃ��j�B
�ŁA�t�@�C���͎c���Ă��ēǂނ��Ƃ͏o�����̂����A�t�@�C����f�B���N�g���[�̃I�[�i�[���ςɂȂ��Ă��ď������݂��o���Ȃ��B

$ ls -la
���v 37
drwxr-xr-x+ 1 Unknown+User Unknown+Group     0 11�� 26 11:27 .
drwxrwxrwt+ 1 Unknown+User Unknown+Group     0 4��  27  2016 ..
-rw-------  1 Unknown+User Unknown+Group 10967 11�� 26 11:26 .bash_history
-rwxr-xr-x  1 Unknown+User Unknown+Group  1513 11�� 26 11:27 .bash_profile
-rwxr-xr-x  1 Unknown+User Unknown+Group  6054 8��  29  2015 .bashrc
-rwxr-xr-x  1 Unknown+User Unknown+Group  1919 8��  29  2015 .inputrc
-rwxr-xr-x  1 Unknown+User Unknown+Group  1236 8��  29  2015 .profile

Windows�̃A�J�E���g���͓����ɂ��Ă������̂����AID���ς���Ă��܂����̂��Ǝv����B
���̏�Ԃ��炽���P��chown���Ă�permission denied�ɂȂ��Ă��܂�orz

bash�iCygwin�j���u�Ǘ��҂Ƃ��Ď��s�v�����chown���邱�Ƃ��o����B
id�R�}���h�Ŏ����̃A�J�E���g�����m�F���āA���̖��O�ɕς���΂悢�B

$ chown -R hishidama:None .*
$ chown -R hishidama:None *

�A���C���X�g�[��

Cygwin�S�̂��A���C���X�g�[������ɂ́A���ڃf�B���N�g���[���폜�����背�W�X�g���[���������肷��K�v������炵���B


Cygwin�ibash�j�̋N��

�C���X�g�[���̍Ō�Ɂg�f�X�N�g�b�v�ւ̃V���[�g�J�b�g�̍쐬�h���s���Ă���� �f�X�N�g�b�v�ɁuCygwin�v�Ƃ����V���[�g�J�b�g���o���Ă���̂ŁA��������s����΂悢�B
�������́AWindows�̃X�^�[�g���u�v���O����(P)�v���uCygwin�v���uCygwin Bash Shell�v�B
�����bash���N������̂ŁA���̒��Łi�C���X�g�[������Ă���jUNIX�R�}���h�����s�ł���B
�i���񂾂��A���[�U�[�p�̏����ݒ���s�����߂��Abash���N������̂ɂ�����Ƃ������Ԃ�������j

���̃V���[�g�J�b�g�́uC:\cygwin\Cygwin.bat�v�Ƃ����o�b�`�t�@�C�����w���Ă���A���̒��͂����P�ɁuC:\cygwin\bin\bash.exe�v�����s���Ă��邾���B
����bash��̃R�}���h�̓��o�͂ɂ�Windows���R�}���h�v�����v�g���g���Ă���͗l�B �i���������āA�R�}���h�v�����v�g�̃R�s�[&�y�[�X�g�@�\���g����j


Cygwin�ibash�j�̏����ݒ�

Cygwin��bash��ls���g���ƁA���{��t�@�C������������������B
.bashrc�Ɉȉ���alias�������Ă����ƕ����������Ȃ��Ȃ�B

alias ls='ls --show-control-chars'

Cygwin�Ǝ��̃R�}���h

cygcheck --version

Cygwin�icygwin1.dll�j�̃o�[�W������\������B

cygcheck -s

Cygwin�̃V�X�e������\������B[2008-11-23]
�C���X�g�[������Ă����p�b�P�[�W�̃o�[�W�������\�������i���A�����-c�̕����֗������j�B

$ cygcheck -s | grep util-linux
util-linux              2.13.1-2

-r�I�v�V���������p����ƁACygwin�Ɋ֌W����Windows�̃��W�X�g���[�̓��e���\�������B

cygcheck -c

�C���X�g�[������Ă���e�p�b�P�[�W�̃o�[�W�����Ə�Ԃ�\������B[2008-11-23]
-d�I�v�V�����𕹗p����ƁA��ԁi�������C���X�g�[������Ă��邩�ǂ����j�̕\���͍s��Ȃ��B

cygcheck -f �R�}���h�̃t���p�X

�R�}���h���ǂ̃p�b�P�[�W�ɓ����Ă������̂Ȃ̂���\������B[2008-11-23]

$ cygcheck -f /usr/bin/logger
util-linux-2.13.1-2

cygcheck -l �p�b�P�[�W��

�C���X�g�[������Ă����p�b�P�[�W�Ɋ܂܂�Ă�����e�i�R�}���h���j�ꗗ��\������B[2008-11-23]

cygcheck -p �R�}���h�̃t�@�C������L�[���[�h

�R�}���h���ǂ̃p�b�P�[�W�ɓ����Ă��邩��\������B[2008-11-23]
�i�R�}���h���C���X�g�[�����Ă��Ȃ��Ă��g����B�Ƃ������C���X�g�[������ۂɂǂ��������Ă���΂������𒲂ׂ�ׂ̂��́H�j
�C���^�[�l�b�g�icygwin.com�̃p�b�P�[�W���|�W�g���[�j�ɐڑ����ĒT���̂ŁA���ʂ��o��܂ő������Ԃ�������B

$ cygcheck -p logger.exe
Found 3 matches for logger.exe.
inetutils/inetutils-1.3.2-37 Common networking clients and servers
util-linux/util-linux-2.13.1-1 Random collection of Linux utilities
util-linux/util-linux-2.13.1-2 Random collection of Linux utilities

-p�̎w��͐��K�\���炵���̂ŁA�g���q��t����Ȃ琳�m�ɂ�"logger\.exe"�Ƃ��ׂ����B
�܂��A�Ⴆ��vim.exe�����������gvim.exe�������|�����Ă���B

�Ȃ�A�ȉ��̂悤�ɂ�����������Ɗm���H�i���̃R�}���h��/bin�̉��ɓ����Ă���̂Łj

$ cygcheck -p /bin/logger
Found 3 matches for /bin/logger.
inetutils/inetutils-1.3.2-37 Common networking clients and servers
util-linux/util-linux-2.13.1-1 Random collection of Linux utilities
util-linux/util-linux-2.13.1-2 Random collection of Linux utilities

�Ⴆ��who�R�}���h�̗l�ɁAwhois�Ƃ��������̃R�}���h�̐ړ����ɂȂ��Ă��܂����̂�����B������܂���/bin/who.exe�Œ��ׂ�̂����������B
�ł�vi�R�}���h����vi.exe�Ƃ��Ă͑��݂��Ȃ��̂Łivim.exe�ւ̃V���{���b�N�����N������j�A/bin/vi.exe�ł͌��‚���Ȃ��B���̏ꍇ�͎���/bin/vi�ŒT���Ċ��ƌo���ōi�荞�ށB
�ł�ksh�R�}���h���Ƃ���ł����‚���Ȃ��Bksh.exe��pdksh�����‚���i/bin/pdksh.exe������j�B
�ň���ksh�Ƃ��ŒT�������Ȃ��B�T���������̂���ʓI�ȒP�ꂾ�Ƃ����ς��o�Ă����Ⴄ���B
�v����ɐF�X���������Ȃ��Ƃ������Ƃ�(�Q) �C���X�g�[������ƃ����N���쐬���Ă����Ȃ�A���̃����N���Ō����ł���ƕ֗��Ȃ̂����B

�R�}���h���̑��ɂ��R�����g�i�Ⴆ��bash�Ȃ�"Bourne Again SHell"�j�ł������ł������c����ȃL�[���[�h���҂����蕪�����Ă�ق����H��(���)

-p�ł͂��̃p�b�P�[�W�̃J�e�S���[�܂ł͒m�鎖���o���Ȃ��B
�������C���X�g�[������View�{�^���ŁuFull�v�Ƃ��i�uCategory�v�ȊO�j�ɂ���΃p�b�P�[�W���ɂȂ�̂ŁA����őI�Ԃ��Ƃ��o����B
�܂��A���̍ۂɃJ�e�S���[���\�������̂ŁA�����Œm�鎖���o����B

cygpath �k�I�v�V�����l �p�X

Cygwin�p�iUNIX�j�̃p�X��Windows�p�̃p�X�̕ϊ����s���B�i��{�I�ɁA�p�X�����݂��Ȃ��Ă��ϊ��j

�I�v�V���� �� �ϊ�����
-w
--windows
-t windows
--type windows
cygpath -w /home/hishidama/zzz.txt C:\cygwin\home\hishidama\zzz.txt
-m
--mixed
-t mixed
--type mixed
cygpath -m /home/hishidama/zzz.txt C:/cygwin/home/hishidama/zzz.txt
-d
--dos
-t dos
--type dos
cygpath -d "/cygdrive/c/Program Files/" c:\PROGRA~1\
cygpath -d "/cygdrive/c/Program Files2/"
�i���݂��Ȃ��p�X�̓G���[�ɂȂ�j
cygpath: cannot create short name of c:\Program Files2\
-u
--unix
-t unix
--type unix
cygpath C:\\cygwin\\home\\hishidama\\zzz.txt
cygpath "C:\cygwin\home\hishidama\zzz.txt"
cygpath "C:\foo.txt"
/home/hishidama/zzz.txt
/home/hishidama/zzz.txt
/cygdrive/c/foo.txt
-a
--absolute
cygpath -a zzz.txt
cygpath -aw zzz.txt
/home/hishidama/zzz.txt
C:\cygwin\home\hishidama\zzz.txt
-p
--path
cygpath -up "$CLASSPATH"
.;C:\�`\lib\tools.jar;C:\�`\hoge.jar
.:/cygdrive/c/�`/lib/tools.jar:/cygdrive/c/�`/hoge.jar
cygpath -mp /home/java/foo.jar:/home/java/bar.jar C:/cygwin/home/java/foo.jar;C:/cygwin/home/java/bar.jar

-d�ɂ��8.3�`���̒Z�k���ւ̕ϊ��́A���ۂɑ��݂��Ă���p�X�i�t�@�C���j�łȂ��ƃG���[�ɂȂ�B[2008-12-26]
���̑��̕ϊ��ł́A���݂��Ă��Ȃ��p�X�i�t�@�C���j�ł����Ȃ��B

-a��t����ƃt���p�X�i��΃p�X�j�ŕ\�������B[2013-09-11]


Cygwin���ǂ����𔻒肷����@

�V�F���̒���Cygwin���ǂ������肷��̂́AHadoop�ł͈ȉ��̗l�Ȋ����ōs���Ă���B[2011-10-01]

cygwin=false
case "$(uname)" in
CYGWIN*) cygwin=true;;
esac
if $cygwin; then
  echo Cygwin!
fi
if ! $cygwin; then
  echo not Cygwin
fi

Cygwin���g���ăR���p�C���E���s

Cygwin���g����C�����̃\�[�X���R���p�C�����Ď��s�t�@�C���iexe�j����邱�Ƃ��o����B

�܂��Avi�i�v�C���X�g�[���j�������̃G�f�B�^�[�Ń\�[�X�������B�i�ʂ�Windows��̃G�f�B�^�[�ŏ����Ă������񂾂��ǁj

$ cd
$ vi sample.c

/home/hishidama/sample.c�iC:\cygwin\home\hishidama\sample.c�j�F

#include <stdio.h>

int main(int argc, char *argv[])
{
	printf("cygwin!\n");

	return 123;
}

�����āAgcc�i�v�C���X�g�[���j�ŃR���p�C������B

$ gcc sample.c -o sample.exe
$ ls
sample.c  sample.exe

�R���p�C�����ʂ�΁A���s���邱�Ƃ��o����B

$ ./sample.exe
cygwin!

$ echo $?
123

�R���p�C�����ďo�������s�t�@�C���͂����܂ł�Windows�̎��s�t�@�C���iexe�j�Ȃ̂ŁAWindows�i�R�}���h�v�����v�g�j������s���邱�Ƃ��o����B

�R�}���h�v�����v�g�F

C:\cygwin\home\hishidama> sample.exe

���A���̂܂܂ł́u�R���|�[�l���g�����‚���܂���v�Ƃ����_�C�A���O���o�ăG���[�ɂȂ�B
���s����ɂ́ucygwin1.dll�v��PATH�ɓ����Ă���K�v������B

C:\cygwin\home\hishidama> PATH=%PATH%;C:\cygwin\bin
C:\cygwin\home\hishidama> sample.exe
cygwin!

C:\cygwin\home\hishidama> echo %ERRORLEVEL%
123

Cygwin�O�v���O�����̎��s

Cygwin�ibash�j������s����e�R�}���h�i���s�t�@�C���j���A���̎��̂�Windows�p�̎��s�t�@�C���iexe�j�ɂȂ�B
�t�Ɍ����΁ACygwin�ibash�j����g�ʏ��Windows�pexe�t�@�C���h�i�R���\�[���A�v�����j�����s���邱�Ƃ��o����B

���̂Ƃ��A���̃R�}���h�̈����ɐ�΃p�X�i�t�@�C������f�B���N�g���[���̃t���p�X�j��n���K�v������̂ł���΁A���ӂ��v��B
Cygwin�p�̎��s�t�@�C����Cygwin�p�̃p�X�����߂��Ă���邪�A�ʏ�̃R�}���h�����R�̂��ƂȂ���������Windows��̃p�X�Ƃ��ĉ��߂��ē��삷��ׁB

�Ⴆ��Windows��tree�itree.com�j��Cygwin�ibash�j����g�����Ƃ��o����B

$ cd /home/hishidama
$ tree.com		���g���q�܂ŕt���Ȃ��ƁAtree.exe��T���ɍs���̂Ō��‚���Ȃ��ăG���[�ɂȂ�
�t�H���_ �p�X�̈ꗗ
�{�����[�� �V���A���ԍ��� BYYY-9ZZZ �ł�
C:.
����c
����java

�������A��΃p�X���w�肷��ƁA�����Ƃ��ĉ��߂���Ă��܂��iDOS�R�}���h�ł́A�������X���b�V���Ŏn�߂��̂���ʓI�j�B

$ tree.com /home/hishidama
�����ȃX�C�b�`�ł� - /home/hishidama

javac�ijavac.exe�j�̂悤�ɃX���b�V���������Ɖ��߂��Ȃ��R�}���h�ł��A��΃p�X�Ƃ��Ă͔F�����Ă���Ȃ��B

$ javac /home/hishidama/java/Sample.java
javac: �t�@�C�������‚���܂���: \home\hishidama\java\Sample.java

���������ꍇ�ɁAcygpath���ƂĂ��֗��I

$ tree.com `cygpath -w /home/hishidama`
�t�H���_ �p�X�̈ꗗ
�{�����[�� �V���A���ԍ��� BYYY-9ZZZ �ł�
C:\CYGWIN\HOME\HISHIDAMA
����c
����java
$ javac `cygpath -w /home/hishidama/java/Sample.java`
$ ls
Sample.class


java�R�}���h�ɃN���X�p�X���w�肵�Ď��s����悤�ȃV�F��������B

/home/hishidama/run.sh�F

#!/bin/bash
JAR=/home/hishidama/java
CLS=jp.hishidama.sample.Sample

# jar�t�@�C����񋓂��ăN���X�p�X�����
CP=
for f in `ls $JAR/*.jar`
do
  CP=$CP:$f		�������ł�UNIX�̃p�X�Ȃ̂ŃR�����ŋ�؂�
done

# Windows�̃p�X�`���ɕϊ�
CP=`cygpath -mp $CP`	������ɂ��A�e�p�X��Windows�`���ɂȂ�Ƌ��ɁA�Z�~�R������؂�ɕς��

java -cp "$CP" $CLS	���Z�~�R������UNIX�ł̓R�}���h�̋�؂��Ȃ̂ŁA�_�u���N�H�[�e�[�V�����ł�����K�v������

���Ȃ݂ɁAoci�h���C�o�[���g�p����Java�v���O���������s����ꍇ�A�‹��ϐ�ORACLE_HOME���Z�b�g����̂ł���΁AWindows�Ƃ��Ẵp�X�Ő��������̂��w�肵�Ă����K�v������B[2008-10-25]


�O������iCygwin�Łj�V�F�������s

Cygwin�ibash�j�łȂ��Ƃ���i�R�}���h�v�����v�g���j����Abash���o�R���ăV�F�������s���邱�Ƃ��o����B

�R�}���h�v�����v�g�F

> PATH=%PATH%;C:\cygwin\bin
> bash --login /home/hishidama/run.sh

�‹��ϐ�PATH��bash.exe�̏ꏊ���w�肵�Ă��Ȃ��ƁA���R���s�ł��Ȃ��B
���s�������V�F����UNIX�̃p�X�Ƃ��Ẵt���p�X�Ŏw�肷��K�v������B

�u--login�v��t���Ă���̂́Abash���̊‹��i����PATH�j�����������������֗�������B
�������Ȃ��ƁAPATH���iUNIX�p�ɂ́j����������Ȃ��̂ŁAls��cygpath�Ƃ�����Cygwin�̃R�}���h�����s�ł��Ȃ��B

�‚��łɁu-x�v�i�u--login -x�v�̏��j��t���Ă��ƁA�‹��������������l�q���\�������B

��Ant����Cygwin�̃R�}���h�����s�����


Java��ProcessBuilder������ibash.exe���o�R���āj�V�F�������s���邱�Ƃ��o����B

Bash.java�F

package jp.hishidama.sample;

import java.io.*;
import java.util.*;

public class Bash {

	public static final String CYGWIN_HOME = "C:/cygwin";

	public static void main(String[] args) throws Exception {

		List<String> list = new ArrayList<String>();
		list.add("/home/hishidama/run.sh");

		execute(list);
	}

	public static int execute(List<String> list) throws Exception {

		String os = System.getProperty("os.name");
		if (os != null && os.startsWith("Windows")) {
			list.add(0, CYGWIN_HOME + "/bin/bash.exe");
			list.add(1, "--login");
			// list.add(2, "-x");
		}

		ProcessBuilder pb = new ProcessBuilder(list);
		pb.redirectErrorStream(true);

		Process p = pb.start();
		�`
		return p.exitValue();
	}
}

��ProcessBuilder����ς����ɃV�F�����Ăяo�����@ [2011-07-28]


�Z�p�����֖߂�
���[���̑��M��F�Ђ�����

�@

�@

�@

�@

�@

�@

�@

�@

�@

�@

�@

�@

�@

�@

�@

�@