Хорошо, вот несколько углов атаки:
1) Упростить. Вы пробовали команды вне псевдонима, чтобы увидеть, работает ли он?
/usr/bin/mate -w ~/.bashrc; source ~/.bashrc
Лучший тест может быть с файлом, который еще не существует:
FILE=$TMPDIR/matewaiting-$(uuidgen); /usr/bin/mate -w $FILE; ls -al $FILE
Если вы получили список файлов, он ждал. Если вы получили сообщение об ошибке, даже если вы ввели что-то в файл и сохранили его, это не так.
2) Несколько двоичных файлов в $PATH
. Вы не упомянули, какую версию вы используете, мы должны проверить ...
$ mate --version
mate 2.4 (2013-11-03 revision 9495)
Если вы не получили это, а вместо этого что-то вроде mate r1577 (2012-07-11)
, то в вашем $PATH
есть несколько бинарных файлов mate, и вы используете старый. В этом случае, запустите следующее несколько раз и перемещайте / переименовывайте / удаляйте любые старые сообщения mate / mate_wait, пока вы, наконец, не увидите последние ...ИЛИ не хватает соответствующих команд в вашем $PATH
:
for MATE in mate{,_wait}; do
p="$(which $MATE)"
echo "$p: $("$p" --version)"
done
На самом деле, вам, вероятно, следует удалить и новые, поскольку они могут быть cp
(вы никогда не будете слишком параноиком со своей ОС :-). Следующая команда жестко свяжет команды в ваш /usr /local /bin, чтобы они автоматически обновлялись, когда / если они обновляются обновлением TextMate 2:
# This is just in case you changed the TM2 bundle name in /Applications
# Using Spotlight...might as well, since it turns every Mac into a heliport...
[[ -n "$TM2" ]] || TM2="$(mdfind '(kMDItemCFBundleIdentifier=com.macromates.TextMate.preview)')"
if [[ -n "$TM2" ]]; then
# Search for the mate binary within the TM2 directory
MATE="$(find "$TM2" -name mate)"
if [[ -n "$MATE" ]]; then
# Hard-link both mate and mate_wait to the
# mate binary into /usr/local/bin
for cmd in mate{,_wait}; do
ln -f "$MATE" /usr/local/bin/$cmd
echo "Linked /usr/local/bin/$cmd to $MATE"
done
else
echo "ERROR: No mate found in $TM2"
fi
else
echo "ERROR: Could not find TextMate 2 app bundle in /Applications."
echo "Please set TM2 environment variable with full path"
fi
Это, конечно, предполагает, что у вас есть /usr/local/bin
и что он на самом деле находится в вашем $PATH
(надеюсь, в FRONT /usr/bin
и /usr/sbin
)...
3) Дитч псевдоним! У меня также есть реалии, но моя - это функция (читай: лучше для чего-то большего, чем псевдоним, как определяет его словарь), и он был обработан с немного более оборонительным программированием (то есть против моего величайшего врага: меня !). Это из моего файла .aliases
# Remove all aliases
unalias -a
alias aliases='alias '
# Re-read the aliases
realias() {
local editor="${VISUAL:-emacs}"
if [[ -z $editor ]]; then
echo "realias: VISUAL environment variable unset" > /dev/stderr
return
fi
[[ "$editor" =~ .*mate$ ]] && editor="$editor -w "
"$editor" $HOME/.aliases
source $HOME/.aliases
}
$VISUAL
в моем .bashrc установлен на emacs, хотя в Mac OS X он позже сбрасывается на $(which mate 2>/dev/null)
.