在组织模式下使用 tramp :session 的奇怪结果

Strange results using tramp :session in org-mode

TLTR;如果你在 Windows 上使用 Emacs Org-Mode Tramp 和带有 SSH 会话的 Plink。它会产生奇怪的输出

长文本: 我使用 Emacs 组织模式。这是一个很棒的工具。我喜欢以一种有文化的 DevOps 方式使用。这也是一个好主意,记录您的工作。

你会讨厌我的,我得用一个Windows站@work。所以我用 Putty plink 测试了它:

#+NAME: harddisk_worker001.sh
#+BEGIN_SRC sh :dir /plink:worker001:/tmp 
df --human-readable --local --exclude-type=tmpfs --exclude-type=overlay | awk '{print  "\t" }' | (read -r; printf "%s\n" "$REPLY"; sort --reverse)
#+END_SRC

#+RESULTS: harddisk_worker001.sh
| Use% | Filesystem                |
|  73% | /dev/mapper/system-lvroot |
|   6% | /dev/mapper/system-lvopt  |
|   6% | /dev/mapper/system-lvhome |
|  47% | /dev/sda1                 |
|   2% | /dev/mapper/system-lvtmp  |
|  27% | /dev/mapper/system-lvvar  |
|   0% | devtmpfs                  |

结果很好,但我也喜欢它的 :session 功能,以加快速度:

#+NAME: harddisk_worker001.sh
#+BEGIN_SRC sh :dir /plink:worker001:/tmp :session worker001
df --human-readable --local --exclude-type=tmpfs --exclude-type=overlay | awk '{print  "\t" }' | (read -r; printf "%s\n" "$REPLY"; sort --reverse)
#+END_SRC

#+RESULTS: harddisk_worker001.sh
| Filesystem                |
| /dev/mapper/system-lvroot |
| /dev/mapper/system-lvopt  |
| /dev/mapper/system-lvhome |
| /dev/sda1                 |
| /dev/mapper/system-lvtmp  |
| /dev/mapper/system-lvvar  |
| devtmpfs                  |

这不是预期的结果!你能解释为什么 table 不同吗?我无法看到这的根本原因。除了 tramp-plink 实现中的错误,但我不确定。

你能重放这个吗?

我不太了解 org,所以我调试了生成的 Tramp 调用。您的第一个命令导致 org-babel--shell-command-on-region,它会调用适当的 process-file 调用。

你的第二个例子,使用 :session 参数,似乎没有调用任何与进程相关的 TRAMP 操作。所以我相信 org 正在内部尝试一些我无法进一步调试的东西。也许是 Tramp 不了解的进程调用,谁知道呢。

我建议写一份组织故障报告。