我在我的一台电脑(Ubuntu LTS 14.04)上注意到了奇怪的seq行为:它使用逗号而不是点作为小数分隔符:seq 0. 0.1 0.2 0,0 0,1 0,2 在我的另一台电脑上使用相同版本的seq(8.21),得到了正常的结果(也是相同的Ubuntu版本)。最奇怪的是,当我从第一台机器通过ssh登录远程机器时,我观察到了同样的问题。甚至从有冲突的机器提交到远程机器的作业调度程序(slurm)的bash脚本也出现了这个问题。我非常困惑。为什么(以及如何!)会发生这种情况?
很可能是LANG变量或其他与本地化有关的变量。在一个seq表现正常的计算机上尝试: $ LANG=fr_FR seq 0. 0.1 0.2 0,0 0,1 0,2 $ LANG=en_US seq 0. 0.1 0.2 0.0 0.1 0.2
LANG=en_US
可以解决问题,但在正常工作的机器上使用LANG=fr_FR
却不会产生此问题。更奇怪的是,当我运行echo $LANG
时,两台机器都输出en_US.UTF-8
。 - MiguelLC_NUMERIC
被设置为fi_FI.UTF-8
。将其更改为en_US.UTF-8
可以解决问题。我不明白的是为什么ssh
会将所有与语言相关的变量传递到远程机器。感谢您的帮助。 - Miguel.ssh/environment
或类似的地方有什么东西吗? - cnicutarecho $LC_NUMERIC
的结果是fi_FI.UTC-8
,而从机器2中的结果是en_GB.UTC-8
。此外,当我ssh到自己的服务器上时,结果是相同的,但错误的seq
行为没有被继承... - Miguel