Вы так уверены, что никогда не будете хотеть использовать летнее время? Что происходит, если правительство места, Вы живете, решает использовать его? Какая цель сохраняет Ваш компьютер часом от синхронизации с реальным миром?
Так или иначе, набор TZ=CST6
- это не часовой пояс, который существует в zoneinfo, это - более старый стандарт переменной среды. Если Вы хотите фактический zoneinfo файл [что можно использовать для localtime], скомпилируйте (использование zic
) исходный файл, состоящий из одной строки:
Zone Etc/CST6 -6:00 - CST
И используйте TZ=Etc/CST6
и связывайтесь/копируйте получающийся файл в/etc/localtime.
Это имеет преимущество использования надлежащего сокращения, а не ерунды "GMT+06"
Три возможности, которые приходят на ум для меня:
emacs
(который Вы проверили),emacs
emacs
двоичный файл не находится в хеш-таблице ПУТИ Вашей оболочки.Можно проверить, есть ли у Вас функция emacs
:
bash-3.2$ declare -F | fgrep emacs
declare -f emacs
И удалите его:
unset -f emacs
Ваша оболочка также имеет хеш-таблицу ПУТИ, которая содержит ссылку на каждый двоичный файл в Вашем ПУТИ. Если Вы добавляете новый двоичный файл с тем же именем как существующее в другом месте в Вашем ПУТИ, оболочке нужно сообщить путем обновления хеш-таблицы:
hash -r
Дополнительное объяснение:
which
не знает о функциях, поскольку это не встроенный удар:
bash-3.2$ emacs() { echo 'no emacs for you'; }
bash-3.2$ emacs
no emacs for you
bash-3.2$ which emacs
/usr/bin/emacs
bash-3.2$ `which emacs` --version | head -1
GNU Emacs 22.1.1
Новое двоичное поведение хеш-таблицы продемонстрировано этим сценарием.
bash-3.2$ PATH=$HOME/bin:$PATH
bash-3.2$ cd $HOME/bin
bash-3.2$ cat nofile
cat: nofile: No such file or directory
bash-3.2$ echo echo hi > cat
bash-3.2$ chmod +x cat
bash-3.2$ cat nofile
cat: nofile: No such file or directory
bash-3.2$ hash -r
bash-3.2$ cat nofile
hi
bash-3.2$ rm cat
bash-3.2$ cat nofile
bash: /Users/mrb/bin/cat: No such file or directory
bash-3.2$ hash -r
bash-3.2$ cat nofile
cat: nofile: No such file or directory
Хотя я не назвал его, which cat
всегда возвращал бы первое cat
в моем ПУТИ, потому что это не использует хеш-таблицу оболочки.
PATH
.Существует встроенное для этого. Два, даже: type
и command
. POSIX путь:
command -v emacs # machine-readable format
type emacs # human-only format
В ударе можно также использовать type -p emacs
видеть просто путь внешней команды.
Однако здесь, which
является на самом деле правильным. Bash хранит информацию о местоположении команды в памяти, так, чтобы это могло выполнить команду быстрее в следующий раз. Вы установили новое emacs
исполняемый файл на Вашем PATH
, но удар все еще имеет старое расположение в своем кэше. Выполненный hash emacs
искать emacs
снова, или hash -r
освободить кэш.
Вы выходили из системы и входили к причине в свой обновленный .bashrc
файл входа в систему, который будет перечитан? В противном случае среда Вашей текущей сессии не была обновлена.
`which emacs` --version
согласился бы с emacs --version
, потому что which
наследовал его ПУТЬ от текущей оболочки.
– mrb
06.09.2012, 22:22
type
команда. – jordanm 07.09.2012, 01:06