
Вопрос: Могу я позвонитьGit-Bashотдать командуВСЛ? Подробные контексты находятся между двумя разделителями. (Простое решение, добавленное в конце этого вопроса.)
Я использую псевдоним для компиляции всех своих *.tex
документов, используяGit-Bashна Windows 10. В моем c:/users/UserName/.bashrc
, я сопоставил:
alias lmk='latexmk -pvc -pdf --synctex=1 -src-specials -silent -time -interaction=nonstopmode'
С родным Gvim.exe
редактором иGit-Bashэкземпляр, в котором размещена latexmk
команда, мне больше не нужно беспокоиться об утомительном процессе компиляции.
Однако, когда я даю ту же latexmk
команду через WSL, я больше не могу выполнять прямой и обратный поиск. Некоторые опции для компилятора будут записывать в PDF (или его файл синтаксиса), сопоставляя все строки в PDF со строками из исходного файла, подробно описанными в путях с поддержкой WSL. Другой способ исправить это: либо полностью перейти в мир WSL, где я использую собственный редактор + средство просмотра PDF (что для меня совершенно ново), либо продолжить отладку в компиляторе и посмотреть, смогу ли я заменить все пути с поддержкой WSL на пути с поддержкой Windows (что, опять же, занимает много времени).
Простым решением было бы каким-то образом вызвать Git-Bash из WSL, передавая lmk
команды в Git-Bash как аргументы командной строки?
Помимо деталей, в целом, этоGit-Bashкакой-нибудь исполняемый файл, который я могу вызвать напрямую из WSL? Если да, то какрассказыватьWSL, что я хотел бы запустить следующую "штуку"? На моей машине я могу найтиGit-Bashкак: "C:\Program Files\Git\git-bash.exe"
. Я попытался перейти /mnt/c/Program\ Files/Git/git-bash.exe
на WSL, но он любезно открыл только отдельное окно Git Bash.
Однострочное решение с использованием zsh + GitBash
Я использую zsh
WSL в качестве оболочки по умолчанию, и вот функция, которую я определил, чтобы сделать lmk TexFilename.tex
ее доступной для непосредственного вызова из командной строки WSL:
function lmk(){
"$(wslpath "C:\Program Files\Git\git-bash.exe")" --hide -c "lmk $1"
}
# Note, the `lmk` here is actually alias from Git-Bash, as defined in: c:/users/UserName/.
Следующая строка делает завершение скрытого процесса bash
/ perl
удобным: выполнение lmk_kill
приведет к завершению всех запущенных компиляторов (через latexmk
perl-скрипт).
alias lmk_kill="powershell.exe kill -n perl"
Подводя итог: с новой zsh
функцией я компилирую *.tex
файлы из WSL так, как будто использую собственные компиляторы MikTeX в Windows. Это хорошо работает с моими текущими настройками GVIM + Sumatra, где и прямой, и обратный поиск полностью функциональны.
Еще более простое решение: хост latexmk
через PowerShell
Подробности см.этот ответниже.
alias lmk='powershell.exe -c latexmk -pvc -pdf --synctex=-1 -src-specials -silent -time -interaction=nonstopmode'
И компилируйте main.tex
файлы в любом месте, скажем, в панели сеанса Tmux на WSL, используя простую команду lmk main.tex
.
решение1
Сначала приведем пример. Пусть простая команда будет touch test.txt
.
- В стиле Windows:
"C:\Program Files\Git\git-bash.exe" --hide -c "touch test.txt"
- В стиле WSL:
wsl.exe -- "$(wslpath "C:\Program Files\Git\git-bash.exe")" --hide -c "touch test.txt"
Итак, как это работает? --
Параметр after wsl.exe
передает оставшуюся командную строку как есть. Затем wslpath
преобразует путь в стиле Windows (обратная косая черта) в стиль WSL/Unix (прямая косая черта), то есть C:\
становится /mnt/c
(по умолчанию). Остальные параметры — это параметры для git-bash.exe
.Здесьнекоторые из них. Для дальнейшего чтения см.Совместимость WSL с Windows.
решение2
Нет необходимости оставаться привязанным Git-bash
вообще. Основным требованием в исходном посте было компилировать *.tex
документы с использованием собственного MikTeX на машинах Windows. Любая командная оболочка, имеющая доступ к PATH
и, следовательно, latexmk
исполняемому файлу, может выполнить работу.
Проблема с Git-bash
: git-bash.exe
Окно всегда запускается в своем собственном эмуляторе в новом окне, что делает невозможным работу с Tmux. Теперь я не вижу необходимости использовать Git-Bash для производства. Прощай, мой старый друг :). Тем не менее, запуск установщика для git
из егостраница загрузкивсе еще является первым, что нужно сделать, когда я настраиваю свою машину Windows. Он обеспечивает git.exe
то, что нужно для gvim.exe
Windows.
Практический способ компиляции *.tex
файлов с использованием Native MikTeX ( latexmk
)
В Windows доступны и другие командные оболочки, и все они доступны для WSL. Например: powershell.exe
должен открыть PowerShell в том же эмуляторе, который размещает сеанс WSL, что позволяет «размещать latexmk
процесс компиляции в WSL». Это открывает дверь для размещения нескольких «фоновых компиляторов» через Tmux.
Однострочная команда для вызова latexmk
из MikTeX с использованием собственной установки Windows 10:
powershell.exe -c latexmk -pvc -pdf --synctex=-1 -src-specials -silent -time -interaction=nonstopmode
Использование: назначить длинную строку команды псевдониму для оболочки, используемой в WSL, например:
alias lmk='powershell.exe -c latexmk -pvc -pdf --synctex=-1 -src-specials -silent -time -interaction=nonstopmode'
Затем из каталога, в котором main.tex
находится, выполните команду lmk main.tex
для компиляции документа LaTeX в непрерывном режиме. Набор флагов, который следует за latexmk
командой, также включит обратный/прямой поиск.