/proc é um ponto de montagem para procfs (tipo de tmpfs , que vive na memória), que é uma interface para a estrutura de dados interna do kernel. Tudo o que você vê em /proc é diretamente preenchido pelo Linux e também mantido pelo próprio kernel.
/proc/self é um link simbólico para o diretório /proc/<PID> , em que <PID> é o ID do processo que acessa /proc nesse mesmo instante. Então, enquanto em bash se você fizer cd /proc/self , você será cd -id no /proc/<PID>/ , onde <PID> é o PID para essa instância de bash , enquanto se algum outro processo, digamos para cat :
$ cat /proc/self/comm
cat
Você absolutamente não deve alterar nada em /proc , exceto se o kernel fornecer alguma interface para alterar os valores. Por exemplo, o kernel fornece a interface /proc/sys/ para alterar os parâmetros do kernel no tempo de execução, embora você deva usar principalmente sysctl para alterar valores em /proc/sys/ em vez de editar diretamente qualquer arquivo. O manuseio incorreto da estrutura de dados interna do Kernel resultaria em um sistema inutilizável ou até mesmo falha no sistema.