问题:我可以调用Git-Bash从WSL发出命令吗?详细的上下文位于两个分隔线之间。(在这个问题的末尾附加了简单的解决方案。)
我使用别名编译我的所有*.tex
文档,在 Windows 10 上使用Git-Bash。在我的c:/users/UserName/.bashrc
中,我映射了:
alias lmk='latexmk -pvc -pdf --synctex=1 -src-specials -silent -time -interaction=nonstopmode'
使用本机Gvim.exe
编辑器和托管命令的Git-Bash实例latexmk
,我不再需要为繁琐的编译过程而烦恼。
但是,当我通过 WSL 发出相同的latexmk
命令时,我无法再执行向前搜索和向后搜索。编译器的一些选项将写入 PDF(或其语法文件),将 PDF 上的所有行映射到 WSL 风格路径中详述的源文件中的行。解决这些问题的另一种方法是:选择完全进入 WSL 世界,在那里我使用本机编辑器 + PDF 查看器(这对我来说是全新的),或者,进一步调试编译器,看看我是否可以换掉所有将 WSL 风格的路径转换为 Windows 风格的路径(这同样非常耗时)。
一个简单的解决方案是,以某种方式从 WSL 调用 Git-Bash,从而将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 的默认 shell,这里是我定义的函数,可以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 编译文件,就好像我在 Windows 上使用本机 MikTeX 编译器一样。这与我当前的 GVIM + Sumatra 设置配合得很好,向前和向后搜索都可以正常运行。
latexmk
更简单的解决方案:通过 PowerShell托管
有关详细信息,请参阅下面的此答案。
alias lmk='powershell.exe -c latexmk -pvc -pdf --synctex=-1 -src-specials -silent -time -interaction=nonstopmode'
并且,在任何地方编译main.tex
文件,例如,在 WSL 上的 Tmux 会话窗格中,使用简单的命令lmk main.tex
。
首先,举一些例子。让一个简单的命令成为
touch test.txt
。那么,这是如何工作的呢?之后的
--
选项wsl.exe
按原样传递剩余的命令行。然后wslpath
将 Windows 样式(反斜杠)路径转换为 WSL/Unix 样式(正斜杠),即C:\
变为/mnt/c
(默认)。其余为 的选项git-bash.exe
。这是其中的一些。如需进一步阅读,请参阅WSL 与 Windows 的互操作性。根本不需要执着
Git-bash
。原始帖子中的基本要求是*.tex
在 Windows 机器上使用本机 MikTeX 编译文档。任何有权访问PATH
并因此latexmk
可执行文件的命令 shell 都可以完成工作。问题
Git-bash
:git-bash.exe
窗口总是在新窗口中在其自己的模拟器中启动,因此无法使用 Tmux。我现在认为没有必要使用 Git-Bash 进行生产。再见了,我的老朋友 :)。尽管如此,git
从其下载页面运行安装程序仍然是我定制 Windows 机器时要做的第一件事。它提供了在 Windows 上git.exe
所需的功能。gvim.exe
*.tex
使用 Native MikTeX编译文件的实用方法(latexmk
)Windows 上还有其他可用的命令 shell,所有这些都可用于 WSL。例如:
powershell.exe
应在托管 WSL 会话的同一模拟器中打开 PowerShell,从而可以“latexmk
在 WSL 中托管编译过程”。这打开了通过 Tmux 托管多个“后台编译器”的大门。latexmk
使用本机 Windows 10 安装从 MikTeX调用的一行命令:用法:将长行命令分配给 WSL 中使用的 shell 的别名,例如:
然后,从
main.tex
本地化的目录发出命令lmk main.tex
以连续模式编译 LaTeX 文档。命令后面的标志集latexmk
也将启用向后/向前搜索。