Tcsh: эталонный конфиг

Однако в нашем распоряжении после создания пользовательского аккаунта, использующего регистрационный шелл /bin/tcsh, и авторизации под новым именем имеется только файл ~/.cshrc с некоторыми минимальными, но вполне разумными настройками, который выглядит так:

alias h         history 25
alias j         jobs -l
alias la        ls -a
alias lf        ls -FA
alias ll        ls -lA# A righteous umask
umask 22

set path = (/sbin /bin /usr/sbin /usr/bin /usr/games /usr/local/sbin /usr/local/bin $HOME/bin)

setenv  EDITOR  vi
setenv  PAGER   more
setenv  BLOCKSIZE       K

if ($?prompt) then
        # An interactive shell -- set some stuff up
        set filec
        set history = 100
        set savehist = 100
        set mail = (/var/mail/$USER)
        if ( $?tcsh ) then
                bindkey "^W" backward-delete-word
                bindkey -k up history-search-backward
                bindkey -k down history-search-forward
        endif
endif

Можно видеть, что он естественным образом распадается на ряд секций, хотя они и не выделены явным образом:

  • сначала идёт определение псевдонимов (alias) для наиболее употребимых команд;
  • затем устанавливаются права доступа по умолчанию для вновь образуемых файлов и каталогов;
  • далее определяются значения встроенной переменной path -- в них включены все каталоги, в которых потенциально могут быть исполняемые файлы;
  • вслед за этим устанавливаются пользовательские переменные окружения -- редактор и пейджер по умолчанию и единица измерения для блоков, в которых соответствующими утилитами выводится размер файлов, объем, занимаемый каталогами, объем занятого или свободного дискового пространства;
  • последняя секция -- условный оператор, определяющий, по наличию переменной prompt, является ли данный экземпляр шелла интерактивным, и если да, устанавливающий ряд переменных, в том числе специфичных для tcsh.

На самом деле двух конфигурационных файлов оказывается много: ~/.cshrc существует только для совместимости с иными платформами и ни во FreeBSD, ни в Linux'е не нужен -- достаточен ~/.tcshrc. Почему его следует выбрать из двух, казалось бы, равноценных вариантов? Да потому, что в нём можно указывать параметры, не воспринимаемые чистым C-shell'ом.


Содержание

. .