0

当 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

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

ps:dos2unix没有解决问题!

谢谢

4

1 回答 1

0

我知道它发生的原因。实际上不是因为编码,而是因为注释脚本在 bash 解释器之前。

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

我刚刚删除了它,一切都开始显示正常:/

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

于 2013-07-05T14:35:38.673 回答