Question: Can I call Git-Bash to issue a command from WSL? Detailed contexts go between the two dividers. (Simple solution appended towards the end of this question.)
I use an alias to compile all my *.tex
documents, using Git-Bash on
Windows 10. In my c:/users/UserName/.bashrc
, I have mapped:
alias lmk='latexmk -pvc -pdf --synctex=1 -src-specials -silent -time -interaction=nonstopmode'
With a native Gvim.exe
editor and a Git-Bash instance that hosts the latexmk
command, I no longer need to bother with the tedious compilation process.
However, when I issue the same latexmk
command through WSL, I can no longer perform forward search and backward search. Some options for the compiler will write to the PDF (or its syntex file), mapping all lines on the PDF to the lines from the source file detailed in WSL-flavored paths. Another way to fix these is to: either opt completely into the WSL world, where I use the native editor + PDF viewer (which is completely new to me), or, to debug further into the compiler and see if I can swap out all the WSL-flavored paths into Windows-flavored paths (which is again, time-consuming).
A simple solution would be, to somehow call Git-Bash from WSL, whereby passing the lmk
commands to the Git-Bash as command line arguments?
Aside from the details, in general, is Git-Bash some executable that I can call directly from WSL? If so, how to tell WSL that I would like to run the following "thing"? On my machine, I can find Git-Bash as: "C:\Program Files\Git\git-bash.exe"
. I tried to pass /mnt/c/Program\ Files/Git/git-bash.exe
to WSL, and it has only kindly opened a stand-alone Git Bash window.
One-liner solution using zsh + GitBash
I use zsh
as my default shell for WSL, and here goes the function that I defined to
make lmk TexFilename.tex
directly callable from WSL's command line:
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/.
The following line makes terminating the hidden bash
/perl
process handy: issuing lmk_kill
shall quite all running compilers (via latexmk
, a perl-script).
alias lmk_kill="powershell.exe kill -n perl"
To summarize: with the new zsh
function, I am compiling *.tex
files from WSL as if I am using the native MikTeX compilers on Windows. This works well with my current settings of GVIM + Sumatra, where both forward and backward search are fully functional.
Even simpler solution: host latexmk
through PowerShell
For details, refer to this answer below.
alias lmk='powershell.exe -c latexmk -pvc -pdf --synctex=-1 -src-specials -silent -time -interaction=nonstopmode'
And, compile main.tex
files anywhere, say, in a pane of Tmux session on WSL, using simple command lmk main.tex
.
latexmk
to live-compile through WSL and preview PDF through WSL viazathura
do not produce reasonable result ==>zathura
, the PDF viewer, will blink when the source PDF refreshes and this "blink" can be very distracting as the entire window goes completely black frequently.latexmk
compiles the*.tex
file and thus generates the*.synctex
files ==> compiler in WSL will write WSL-flavored paths to the*.synctex
file, and a normal Windows appliaction (Sumatra.exe, for example) cannot decipher such WSL-flavored paths.