<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Bash on pemako</title>
    <link>http://pemako.cn/tags/bash/</link>
    <description>Recent content in Bash on pemako</description>
    <image>
      <title>pemako</title>
      <url>http://pemako.cn/images/papermod-cover.png</url>
      <link>http://pemako.cn/images/papermod-cover.png</link>
    </image>
    <generator>Hugo -- 0.146.6</generator>
    <language>en</language>
    <lastBuildDate>Thu, 09 Apr 2026 20:00:00 +0800</lastBuildDate>
    <atom:link href="http://pemako.cn/tags/bash/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Bash</title>
      <link>http://pemako.cn/posts/bash/</link>
      <pubDate>Thu, 09 Apr 2026 20:00:00 +0800</pubDate>
      <guid>http://pemako.cn/posts/bash/</guid>
      <description>&lt;h2 id=&#34;bash基础&#34;&gt;&lt;code&gt;Bash&lt;/code&gt;基础&lt;/h2&gt;
&lt;h3 id=&#34;shell与bash&#34;&gt;&lt;code&gt;Shell&lt;/code&gt;与&lt;code&gt;Bash&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;sh&lt;/code&gt; 是一种标准,&lt;code&gt;bash&lt;/code&gt;是符合这个标准的实现。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;下面的流程是双向的，由于目前markdown中的编辑器不支持双向箭头操作，故先暂时这样。&lt;a href=&#34;https://mermaid-js.github.io/mermaid/#/flowchart?id=beta-multi-directional-arrows&#34;&gt;双向箭头&lt;/a&gt;, 同时也不支持&lt;a href=&#34;https://mermaid-js.github.io/mermaid/#/flowchart?id=subgraphs&#34;&gt;subgraphs&lt;/a&gt;。&lt;/p&gt;&lt;/blockquote&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;flowchart LR
subgraph User
    用户
end
用户&amp;lt;--&amp;gt;伪终端
用户&amp;lt;--&amp;gt;控制台

subgraph Term
    伪终端&amp;lt;--&amp;gt;shell接收解析执行
    控制台&amp;lt;--&amp;gt;shell接收解析执行
end

shell接收解析执行&amp;lt;--&amp;gt;OS
subgraph Kernel
    OS&amp;lt;--&amp;gt;硬盘I/O
    OS&amp;lt;--&amp;gt;网络I/O
    OS&amp;lt;--&amp;gt;其它操作
end
&lt;/code&gt;&lt;/pre&gt;&lt;blockquote&gt;
&lt;p&gt;这里上传到github按照图片存储展示&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://raw.githubusercontent.com/pemako/imgs/master/public/youdao/mermaid-diagram-20210818111907.png&#34;&gt;&lt;/p&gt;
&lt;h4 id=&#34;login-bash&#34;&gt;&lt;code&gt;Login Bash&lt;/code&gt;&lt;/h4&gt;
&lt;p&gt;&lt;code&gt;Login Bash&lt;/code&gt;初始化的配置文件分为下面两类&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;全局配置
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;/etc/profile&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;个人配置
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;~/.bash_profile&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;~/.bash_login&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;~/.profile&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;login-sh&#34;&gt;&lt;code&gt;Login Sh&lt;/code&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;Login Sh&lt;/code&gt;在初始话的时候只会加载下面两个配置文件&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;/etc/profile&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;~/.profile&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;查看用户使用的&lt;code&gt;sh&lt;/code&gt;类型&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;/ect/passwd&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;创建用户的时候指定 &lt;code&gt;sh&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;useradd -s /bin/bash&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;修改用户的&lt;code&gt;sh&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;usermod, chsh&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;为了统一两种 &lt;code&gt;Bash&lt;/code&gt;的配置，在&lt;code&gt;login bash&lt;/code&gt;里应用&lt;code&gt;interactive bash&lt;/code&gt;的配置&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt; -f &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$HOME&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;/.bashrc&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;source&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$HOME&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;/.bashrc&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;脚本执行顺序&#34;&gt;脚本执行顺序&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;父&lt;code&gt;shell&lt;/code&gt; &lt;code&gt;Fork&lt;/code&gt; &amp;ndash; &lt;code&gt;Sub-shell&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Sub-shell&lt;/code&gt; 继承父&lt;code&gt;shell&lt;/code&gt;环境&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Sub-shell&lt;/code&gt; 调用指定的解释器执行该脚本&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Sub-shell&lt;/code&gt; 退出，相关环境被销毁&lt;/li&gt;
&lt;li&gt;父&lt;code&gt;shell&lt;/code&gt;取得&lt;code&gt;Sub-shell&lt;/code&gt;的退出状态&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;bash命令的解析过程&#34;&gt;&lt;code&gt;Bash&lt;/code&gt;命令的解析过程&lt;/h3&gt;
&lt;p&gt;命令解析的时候一定按照下面的7个步骤进行执行&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
