西维蜀黍

【Linux】Oh-my-zsh 启动慢

升级

$ upgrade_oh_my_zsh

启动测速

$ time /bin/zsh -i -c exit

$ for i in $(seq 1 10); do /usr/bin/time $SHELL -i -c exit; done
  ...


【Linux】Shell 和 Shell 脚本的执行

fork - 创建子 shell 进程

父子 shell 进程是相对而言的,它描述了两个 shell 进程的fork关系。

以bash为例,当在bash shell中执行一个命令时,其实是在当前 bash shell 进程中 fork 出一个子 bash shell 进程,然后在这个子进程中运行相应的命令,当命令执行完成后,这个子进程就被end了。

简单来说,父Shell进程创建子Shell进程时,调用的是 fork() 函数。

在这种情况中:

  • 子 shell 进程会继承父 shell 进程中设置的环境变量
  • 但是子 shell 进程中设置的环境变量并不会带回父 shell 进程(即不会影响父 shell 进程),以下为证明:
$ export SW="aaa"
$ echo $SW
aaa
$ bash
$ echo $SW
aaa
$ export SW2="bbb"
$ echo $SW2
bbb
$ exit
exit
$ echo $SW2
  ...


【Linux】Shell 和 Bash

Unix shell

Unix shell,一种壳层与命令行界面,是UNIX操作系统下传统的用户和计算机的交互界面。第一个用户直接输入命令来执行各种各样的任务。

普通意义上的shell就是可以接受用户输入命令的程序。它之所以被称作shell是因为它隐藏了操作系统低层的细节。同样的Unix下的图形用户界面GNOME和KDE,有时也被叫做“虚拟shell”或“图形shell”。

  ...


【Linux】bash 和 zsh 的启动脚本(.zshrc,.bash_profile,~/.profile 等区别)

结论

zsh

当默认 shell 为 zsh 时,且当开启一个新 tab 时(或者一台主机通过 SSH 登录本主机时),/etc/zprofile/etc/zshrc~/.zshrc 均会被执行 ,且执行顺序为:

  • /etc/zprofile
  • /etc/zshrc
  • ~/.zshrc

当开启一个新 tab 时,

Last login: Sat Jun 13 11:46:23 on ttys006
execute /etc/zprofile
execute /etc/zshrc
execute ~/.zshrc

当一台主机通过 SSH 登录本主机时

$ ssh wei.shi@192.168.16.173
Last login: Sat Jun 13 11:54:43 2020
execute /etc/zprofile
execute /etc/zshrc
execute ~/.zshrc
~ $

当启用一个新zsh 进程时

$ zsh
execute /etc/zshrc
execute ~/.zshrc
$
  ...


【Golang】go-redis Redis 连接库学习

  ...