Мои последние продвижения по теме -
https://dl.dropboxusercontent.com/u/494 ... comspec.7z
В комплекте:
- bashcmd.exe (с исходниками) - его ставим ComSpec-ом. Он квотирует кавычки и бэкслэши в команде так, чтобы bash воспринял в точности то, что ввёл на ком. строке пользователь. Если поставить set BASHCMD_CDEBUG=1, выводит отладочную информацию. В far:config System.Executor.ComspecArguments менять не требуется - использовать те, что для cmd (/S /C "{0}").
- bashcmd.sh - wrapper script. Подключает специальный rcfile (у меня это /etc/bash.bashcmdrc), там могут быть алиасы, настройки шелла (shopt, set), доп. переменные среды и т.д. Проверяет, если выполняемая команда - это запуск файла bat|cmd|vbs|vbe|js|jse|wsf|wsh|msc, то выполняет его через cmd, иначе выполняет команду bash-ем (в том же процессе, с помощью eval). Если поставить set BASHCMD_DEBUG=1, выводит отладочную информацию. Полезно, чтобы понять, когда Far вызывает команды через ComSpec, а когда напрямую.
- Bash.lua - макросы для быстрого переключения ComSpec между cmd и bash. Также по AltEnter (работает только, если у вас есть скрипт
XKeys, иначе поменяйте) можно выполнить текущую команду или текущий файл (если ком строка пуста) в альтернативном (не текущем) ComSpec.