|
Useful Configuration of Cygwin, Part 1: Install, rxvt,
and BASH
Installation
To install
cygwin first download
http://www.cygwin.com/setup.exe and run the setup. Be sure to choose
at least the folllowing packages:
(hint: if you find the listing of packages according to
groups annoying then click the "View" button in the upper-right which
will change the listing order to alphabetical)
Admin: cygrunsrv
Doc: cygwin-doc
Doc: man
Editors: vim
Interpreters: perl
Mail: fetchmail
Mail: mutt
Mail: procmail
Net: inetutils
Net: openssh
Net: openssl
Net: rsync
Shells: bash
Shells: rxvt
Text: less
Utils: cygutils
Packages which the above packages depend upon will be automatically
selected and installed so there is no need to worry about installing
dependencies. However one problem with this is that if you
accidentally click on a package which you do not want to install and it
has a lot of dependencies, all those dependencies will automatically be
selected and you will have to manually deselect each one. To
complicate issues further, there is no way during the setup to find out
what dependencies each package has. This is basically a mess and
hopefully someone will put together a better setup utility. If you
do not want to mess around with X.org stuff then be careful not to
select anything that might depend on the X.org packages, including
X-term.
You probably want to install a
lot of other packages such as perl, grep, exim, ssmtp, zip, unzip, bunzip, tar, gzip,
wget, irc, links, ncftp, lftp, file, sunrpc, nfs-server, mc, and others as I have only
listed ones essential for this setup.
Setting up
rxvt
One of the main points, if not THE main point for setting up Cygwin
is to have a bash shell. By default cygwin sets itself up with a
link to the cygwin bash shell in the Start menu and on the desktop.
The default Cygwin shell works but is a little bit ugly and can
sometimes lead to problems when working with remote systems running
other operating systems.
The cygwin shell
sets the TERM type to "cygwin" which some systems do not properly
recognize and certain applications will not work properly or at all
under it.
The best alternative is to use rxvt
(ouR eXended Virtual Terminal) which is also
included with Cygwin. But it is not installed by default, you must
select it during setup and then configure it if you want to use it.
Rxvt's $TERM variable is sets to "xterm" which is more
universally recognized by other applications and ensures maximum
interoperability with other systems. Also, rxvt is far more
configurable than the cygwin term. Consult the rxvt man page for
more info on its many config options.
If the rxvt binary is launched without arguments it will run like a
regular DOS shell without the bash environment. In order to launch
in properly you need to create a new shortcut and customize its arguments.
Here is how to do it:
In Windows Explorer go to
C:\cygwin\bin
and right-click on rxvt.exe
and choose
Send To -> Desktop (create shortcut).
Now right-click
on the shortcut it just created on the desktop and choose
Properties.
Select the Shortcut tab
and change the entry under Target
to:
C:\cygwin\bin\rxvt.exe -sl 1500 -fn "Lucida Console-12" -bg black -fg grey -sr -e bash
--login -i
This will now launch rxvt correctly with
a decent looking font, a black background with white text, and 1500
scrollback lines (you can change the number of scrollback lines to
whatever you like. I prefer a high number.)
You can also play around with the font type and size, for example you
could also use:
C:\cygwin\bin\rxvt.exe -sl 1500 -fn "courier" -bg
wheat -fg grey -sr -e bash
--login -i
You get the idea.
But we are not finished. There are a few things to set up with our
bash shell to make it behave decently. Depending upon how cygwin
installed it may or may not have copied the following three files into
your home directory: .bash_profile,
.bashrc,
and .inputrc.
Type
cd ~ to switch to your home directory
(~ is shorthand for your home directory in the shell),
then ls -la to list all files in the directory. If you do not see
them then copy them from /etc/skel. Now edit
.bashrc with the vim
editor and uncomment (remove the leading #) the following lines:
set -o notify
export HISTCONTROL=ignoredups
alias less='less -r' alias rm='rm -i' alias whence='type -a' alias ls='ls -F --color=tty' alias dir='ls --color=auto --format=vertical' alias vdir='ls --color=auto --format=long' alias ll='ls -l' alias la='ls -A' alias l='ls -CF'
and
here are a several more to add:
alias cp='cp -i'
alias mv='mv -i' alias c:='cd /cygdrive/c' alias grep='grep --color' alias vi='vim'
alias cls='clear'
# set a nice looking prompt:
PS1='\u@\h:\W\$ '
#A function to pipe any command to less:
function so {
eval "$@" |less -I~
}
These aliases tweak several shell commands to make them more useful
and safer (for example by causing rm
, cp,
and mv
to always prompt before overwriting and deleting). Aliases are
only one small part of Bash, which is an extremely powerful and
important tool that all users can benefit from highly by knowing.
This last entry is a BASH function which pipes any command to less.
Running so ls
for example will pipe the ls
command to less,
as if ls | less
had been typed. Very useful.
For many, including myself, the shell environment is the most critical
part of a system and graphical applications and utilities are often
superfluous, distracting, wasteful of resources, and even dangerous.
Most of the command GNU command-line utilities are practically universal
and can be used on everything from supercomputers to small handheld
devices.
Finally, to .inputrc you can add the following:
#if you don't like the annoying
end-of-line beeps: set bell-style none
# to show all characters like едц set meta-flag On set input-meta On set output-meta On set convert-meta Off
"\C-v": paste-from-clipboard
You should now have a decent rxvt shell working under Windows.
How to Copy and Paste text to and from an rxvt terminal
Text which has been copied to the clipboard via
Ctrl-c (or
cut with Ctrl-x) can be pasted directly into an
rxvt terminal by positioning the
cursor in the rxvt terminal where you want the text inserted and
holding the shift key while clicking the left mouse button.
To copy text from an rxvt terminal simply
drag the cursor over the region of text
you want to select with the mouse
while holding the left
button down. Selected text will be
highlighted and available in the
clipboard for pasting into other applications via
Ctrl-v.
Double-clicking on a word will select the entire word.
Clicking three times
will selected an entire line. To select a range of words you can
double click on the first word, then set the mouse cursor to the right of
the last word or letter you want copied, and right-click.
References:
"Cygwin Installation";
http://mpickering.homeip.net/phpwiki/index.php/CygwinInstallation "rxvt with bash";
http://members.cox.net/zmedico/software/language/c/emu/cygwin/rxvt/ "Cygwin Prompt Here";
http://www.mindview.net/Etc/Cygwin/BashHere "Unix emulation and porting on Win32";
http://user.it.uu.se/~hamo0815/win32unix/
|
|