<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Zsh on Cesar Gimenes</title><link>https://crg.eti.br/en/tags/zsh/</link><description>Recent content in Zsh on Cesar Gimenes</description><generator>Hugo -- gohugo.io</generator><language>en</language><managingEditor>crg@crg.eti.br (Cesar Gimenes)</managingEditor><webMaster>crg@crg.eti.br (Cesar Gimenes)</webMaster><lastBuildDate>Sun, 11 Feb 2024 14:13:47 -0300</lastBuildDate><atom:link href="https://crg.eti.br/en/tags/zsh/index.xml" rel="self" type="application/rss+xml"/><item><title>ps - process hierarchy</title><link>https://crg.eti.br/en/post/hierarquia-de-processos/</link><pubDate>Sun, 11 Feb 2024 14:13:47 -0300</pubDate><author>crg@crg.eti.br (Cesar Gimenes)</author><guid>https://crg.eti.br/en/post/hierarquia-de-processos/</guid><description>&lt;p>When I started using &lt;a href="https://github.com/crgimenes/compterm">compterm&lt;/a>, a problem soon appeared: sometimes I forgot that compterm was loaded. So I wrote a small function to detect whether I was in a session started by compterm or just a regular zsh session.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff7b72">function&lt;/span> is_parent_compterm &lt;span style="color:#ff7b72;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> local &lt;span style="color:#79c0ff">pid&lt;/span>&lt;span style="color:#ff7b72;font-weight:bold">=&lt;/span>&lt;span style="color:#79c0ff">$$&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> local parent_pid
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff7b72">while&lt;/span> &lt;span style="color:#ff7b72;font-weight:bold">[&lt;/span> &lt;span style="color:#a5d6ff">&amp;#34;&lt;/span>&lt;span style="color:#79c0ff">$pid&lt;/span>&lt;span style="color:#a5d6ff">&amp;#34;&lt;/span> -ne &lt;span style="color:#a5d6ff">1&lt;/span> &lt;span style="color:#ff7b72;font-weight:bold">]&lt;/span>; &lt;span style="color:#ff7b72">do&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#79c0ff">parent_pid&lt;/span>&lt;span style="color:#ff7b72;font-weight:bold">=&lt;/span>&lt;span style="color:#ff7b72">$(&lt;/span>ps -p &lt;span style="color:#79c0ff">$pid&lt;/span> -o &lt;span style="color:#79c0ff">ppid&lt;/span>&lt;span style="color:#ff7b72;font-weight:bold">=&lt;/span>&lt;span style="color:#ff7b72">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#79c0ff">parent_pid&lt;/span>&lt;span style="color:#ff7b72;font-weight:bold">=&lt;/span>&lt;span style="color:#a5d6ff">${&lt;/span>&lt;span style="color:#79c0ff">parent_pid&lt;/span>//[[:&lt;span style="color:#79c0ff">blank&lt;/span>:]]/&lt;span style="color:#a5d6ff">}&lt;/span> &lt;span style="color:#8b949e;font-style:italic"># Remove espaços&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8b949e;font-style:italic"># Verifica se o nome do comando do processo pai é &amp;#39;compterm&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff7b72">if&lt;/span> ps -p &lt;span style="color:#79c0ff">$parent_pid&lt;/span> -o &lt;span style="color:#79c0ff">comm&lt;/span>&lt;span style="color:#ff7b72;font-weight:bold">=&lt;/span> | grep -q &lt;span style="color:#a5d6ff">&amp;#34;^compterm&lt;/span>$&lt;span style="color:#a5d6ff">&amp;#34;&lt;/span>; &lt;span style="color:#ff7b72">then&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff7b72">return&lt;/span> &lt;span style="color:#a5d6ff">0&lt;/span> &lt;span style="color:#8b949e;font-style:italic"># Retorna true se encontrar &amp;#39;compterm&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff7b72">fi&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#79c0ff">pid&lt;/span>&lt;span style="color:#ff7b72;font-weight:bold">=&lt;/span>&lt;span style="color:#79c0ff">$parent_pid&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff7b72">done&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff7b72">return&lt;/span> &lt;span style="color:#a5d6ff">1&lt;/span> &lt;span style="color:#8b949e;font-style:italic"># Retorna false se &amp;#39;compterm&amp;#39; não for encontrado&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff7b72;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This function walks through all the parent processes of the current process, and if any of them is named compterm, it returns true. With that I can customize the prompt and tell whether compterm is loaded or not.&lt;/p></description></item></channel></rss>