编码和进程名称

时间:2013-07-05 11:03:52

标签: linux bash shell encoding

当shell脚本文件编码不同时,我在进程名称中面临一种奇怪的,非常奇怪的行为。

情景如下:

两个文件 - caller.sh(ASCII文本) - executor.sh(UTF-8 Unicode文本)

# caller.sh
#!/bin/bash

/soft/executer.sh &
sleep 60

执行“caller.sh&”后,“ps”命令返回名为“caller.sh”的两个进程:

PID   TTY      TIME     CMD
19566 pts/7    00:00:00 bash
22699 pts/7    00:00:00 caller.sh
22690 pts/7    00:00:00 caller.sh
22694 pts/7    00:00:00 ps

但是如果将“caller.sh”编码更改为“Bourne-Again shell脚本文本可执行文件”(保存在Windows框中并转移到linux),则命令ps开始正常显示:

PID   TTY      TIME     CMD
19566 pts/7    00:00:00 bash
22689 pts/7    00:00:00 caller.sh
22694 pts/7    00:00:00 ps
22690 pts/7    00:00:00 executer.sh

有人可以解释编码和进程名称/ bash之间的关系吗?

p.s:dos2unix无法解决问题!

由于

1 个答案:

答案 0 :(得分:0)

我明白了它发生的原因。实际上并不是因为编码而是因为评论脚本在bash解释器之前。

# test script
#!/bin/bash
...

我刚删除它,一切都开始显示确定:/

有人知道它发生的原因吗?