CYGWIN

Jul 11, 2016 12:07

Сегодня хотел немного вермени уделить cygwin под windows.
Сложилось так, что все программы для работы, касаемо разработки печатных плат - разведение, трассировки и прочее, я делаю в программах, которые есть только под Windows.
Ну вот сложилось так, что я использую простые понятные и бесплатные программы. Которые есть только под одну операционную систему.

И вот иногда работая в Windows, нужны примочки и удобные плюшки от Linux. Ну там полноценный bash, скрипты, awk, sed и прочее. Если вам это ничего не говорит - ничего старшного.
Так вот, ставим себе cygwin. Скачали и установили. Установка не очень сложная, но там надо посмотреть внимательно и всё, что делать по умолчанию - делать по умолчанию. Потом - разберемся что к чему и узнаем как и что установить нам будет ещё надо. Всегда можно будет добавить программки, путем запуска того же инсталятора и выбора нужных программ.

Так вот, установили, заходим в папку, видим:


Что тут у нас? Системные папки всякие. Посмотрим, что у нас в корневой папке есть bat-файл. При помощи него и запускется терминал для работы. Посмотрим на его содержимое:


В нём у нас устанавливается рабочая папка и делается странное - "bash --login -i". Это на самом деле запуск скрипта перед запуском терминала mintty для того, что бы описать переменные окружения и из терминала cigwin'a мы могли получить то, что надо. Теперь давайте найдем сам терминал mintty. Он находится в папке bin\. Запустим его. И параллельно запустим терминал при помощи bat файла в корневом каталоге. Посмотрим внимательно и поймем, что есть разница. В чем она и почему что-то работает, а что-то не работает.

В самом начале запуска терминала напрямую, через mintty, ничего не выполняется, не прописываются переменные окружения и ничего поэтому вызвать не получается, пока мы не скажем - что мы суперюзер.
Для этого, пойдем и поправим .bashrc. Уверенной и твердой рукой. Да, кстати, он находится в каталоге home\UserName\. Там кстати довольно много файлов может быть, не пугайтесь.

У меня он выгляди так:
[Посмотреть как]if [ -z "${PROFILEREAD+true}" ] ; then
# Setup some default paths. Note that this order will allow user installed
# software to override 'system' software.
# Modifying these default path settings can be done in different ways.
# To learn more about startup files, refer to your shell's man page.
: ${ORIGINAL_PATH=${PATH}}
if [ ${CYGWIN_NOWINPATH-addwinpath} = "addwinpath" ] ; then
PATH="/usr/local/bin:/usr/bin${PATH:+:${PATH}}"
else
PATH="/usr/local/bin:/usr/bin"
fi

# see https://cygwin.com/ml/cygwin/2014-05/msg00352.html
# MANPATH="/usr/local/man:/usr/share/man:/usr/man${MANPATH:+:${MANPATH}}"
INFOPATH="/usr/local/info:/usr/share/info:/usr/info${INFOPATH:+:${INFOPATH}}"
# Set the user id
USER="$(/usr/bin/id -un)"
# TMP and TEMP as defined in the Windows environment
# can have unexpected consequences for cygwin apps, so we define
# our own to match GNU/Linux behaviour.
unset TMP TEMP
TMP="/tmp"
TEMP="/tmp"
# Here is how HOME is set, in order of priority, when starting from Windows
#  1) From existing HOME in the Windows environment, translated to a Posix path
#  2) from /etc/passwd, if there is an entry with a non empty directory field
#  3) from HOMEDRIVE/HOMEPATH
#  4) / (root)
# If the home directory doesn't exist, create it.
if [ ! -d "${HOME}" ]; then
if mkdir -p "${HOME}"; then
echo "Copying skeleton files."
echo "These files are for the users to personalise their cygwin experience."
echo
echo "They will never be overwritten nor automatically updated."
echo
if ! cd /etc/skel; then
echo "WARNING: Failed attempt to cd into /etc/skel!"
else
/usr/bin/find . -type f |
while read f; do
fDest=${f#.}
if [ ! -e "${HOME}${fDest}" -a ! -L "${HOME}${fDest}" ]; then
/usr/bin/install -D -p -v "${f}" "${HOME}/${fDest}"
fi
done
unset fDest
fi
else
echo "${HOME} could not be created."
{ [ -d "${TEMP}" ] && HOME="${TEMP}"; } ||
{ [ -d "${TMP}" ] && HOME="${TMP}"; } ||
{ [ -d /tmp ] && HOME=/tmp; } ||
HOME=/
echo "Setting HOME to ${HOME}."
fi
fi
readonly PROFILEREAD=true
fi
# Make sure we start in home unless invoked by CHERE
if [ ! -z "${CHERE_INVOKING}" ]; then
unset CHERE_INVOKING
else
cd "${HOME}" || echo "WARNING: Failed attempt to cd into ${HOME}!"
fi
# Shell dependent settings
profile_d ()
{
_LC_ALL_SET_="${LC_ALL+set}"
_LC_SAVE_="${LC_ALL-null}"
LC_ALL=C
if [ "${_LC_SAVE_}" = "null" ]; then
  for file in /etc/profile.d/*.$1; do
    [ -e "${file}" ] && . "${file}"
  done
  unset LC_ALL
else
  for file in /etc/profile.d/*.$1; do
    [ -e "${file}" ] && LC_ALL="${_LC_SAVE_}" . "${file}"
  done
  LC_ALL="${_LC_SAVE_}"
fi
unset file
unset _LC_ALL_SET_
unset _LC_SAVE_
}
HOSTNAME="$(/usr/bin/hostname)"
profile_d sh
LANG='en_GB.UTF-8'
# Exclude *dlls from TAB expansion
export EXECIGNORE="*.dll"
alias ls='ls --color'
alias la='ls -la'
LS_COLORS='di=01;34:ln=01;36:pi=40;33:so=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:ex=01;32:*.zip=35:*.tar=31'
export PROFILEREAD PATH ORIGINAL_PATH INFOPATH USER TMP TEMP HOSTNAME PS1 LANG LS_COLORS
cd /cygdrive/d/SVN/workspace/

Там много чего интересного происходит, но самое главное - установка переменных окружения, установка подсветки синтаксиса и переход в основную рабочую папку.

cygwin, программирование

Previous post Next post
Up