当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无法解决问题!
由于
答案 0 :(得分:0)
我明白了它发生的原因。实际上并不是因为编码而是因为评论脚本在bash解释器之前。
# test script
#!/bin/bash
...
我刚删除它,一切都开始显示确定:/
有人知道它发生的原因吗?