Linux 编码和进程名称

Linux 编码和进程名称,linux,bash,shell,encoding,Linux,Bash,Shell,Encoding,当shell脚本文件编码不同时,进程名称中会出现一种奇怪的、非常奇怪的行为 情况如下: 两个文件 -caller.sh(ASCII文本) -executor.sh(UTF-8 Unicode文本) 执行“caller.sh&”后,“ps”命令返回两个名为“caller.sh”的进程: 但是,如果将“caller.sh”编码更改为“Bourne再次shell脚本文本可执行文件”(保存在windows框中并传输到linux),命令ps将开始正确显示: PID TTY TIME

当shell脚本文件编码不同时,进程名称中会出现一种奇怪的、非常奇怪的行为

情况如下:

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

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

但是,如果将“caller.sh”编码更改为“Bourne再次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不能解决这个问题


谢谢

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

# test script
#!/bin/bash
...
我刚把它取下来,所有的东西都显示出来了,好的:/


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

这不是
#/bin/bash
,但是
#/bin/bash
对不起,不要理会。。这是一个输入错误如果是从调用方调用的,
executor.sh
如何接收比
caller.sh
更小的PID?看起来22685是一个单独的实例,它自己运行,而不是
caller.sh
实例的子进程。好的,我已经手动创建了该场景,并且错误地放置了一个较小的PID。也可以忽略这一点。当系统执行器是一个文件时,它会检查文件的前两个字节是否为“#!”,如果为“#!”,并使用下面的解释程序将文件作为脚本运行。如果这些字符出现在文件的后面,它们就没有任何用处。bash有一个回退模式,如果常规exec失败(在本例中是这样),bash将以bash脚本的形式运行它,并希望这至少很接近,但它并没有完全正常地设置所有内容……请将此“答案”移到您的问题上。你还在问一个问题。祝大家好运。
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
# test script
#!/bin/bash
...