O que você está vendo não deve surpreendê-lo. Você iniciou gedit
duas maneiras diferentes, por meio de dois pais diferentes, então, é claro, o PPID - ID do processo pai - é diferente nos dois casos.
O primeiro é filho do Bash, porque você o iniciou a partir de uma linha de comando do Bash.
O processo inicial do segundo filho será o sistema GUI do seu sistema operacional, mas porque ele está sendo bifurcado em segundo plano, fica órfão, então o init o adota. Esta é a forma padrão de lidar com processos órfãos em um sistema Unix / Linux.
O shell (Bash) simplesmente não está envolvido no segundo caso. O Bash é um filho do Gnome Terminal, que será iniciado por algum componente principal do sistema. Eu vejo upstart
como o pai na minha caixa Ubuntu 14.10, mas isso irá variar em diferentes sistemas Linux e Unix. Quando o terminal fecha, Bash, assim como quaisquer programas iniciados por Bash que não foram deixados entrar em segundo plano de alguma forma.
Por fim, todos os processos são iniciados pelo kernel, geralmente através de algum wrapper ao redor da execve(2)
chamada do sistema . Mas você não verá o kernel como um processo pai aqui; o kernel age em nome de algum processo do usuário, de modo que o processo é registrado como pai.
O motivo init(8)
não é PID 1 é coberto em outra resposta aqui .