请问大家都用什么Shell

没有搞过严肃的项目,感觉日常用哪个都差不多。我现在极简 zsh,prompt 就这么几行,显示个 git branch 和 return code。

autoload -Uz vcs_info
precmd() { vcs_info }
zstyle ':vcs_info:git:*' formats '%b '

NEWLINE=$'\n'
setopt PROMPT_SUBST
PROMPT='%F{blue}%~%f %F{red}${vcs_info_msg_0_}%f${NEWLINE}%(?..%F{red}%?%f )%F{green}❯%f '

大部分需求都可以在 emacs 里完成,感觉没啥差别。

fish + starship,配置简单,省心,体验跟之前用 zsh + p10k + 一大堆插件没啥区别,而且特别适用用nix管理

starship 本身当然没有性能问题。启动慢不是 starship 启动慢,是 zsh 的一些插件(或者一些软件的 shell integration)的启动速度慢。

比较明显的启动速度慢的 shell integration,比如 conda,nvm 之类的,用 powerlevel10k 都能明显的感受到启动速度变快了。

我现在是在 tmux 里面用 bash,tmux 参考了 oh my tmux

bash 但实际真要写点什么 直接jaba上了 或者试试guile 之类的了。

目前bash只会while true sleep seq for 但用上guile就很多了 直接system组合起来用

fish

fish,写的脚本基本上 posix sh 兼容

我的 bash (退出码, 命令编号 1st 2nd …, Git 分支名, shell 层级):

纯手写, 没有引入任何主题.

1 个赞

GNU Bash 我通常更喜欢,因为它具有交互功能,我并不特别爱写bash脚本。

在GNU Emacs中,我也很喜欢eshell。

kitty + fish + starship

基本就用 zsh + grml-zsh-config.

如果你是 archlinux 用户的话可以直接安装 pacman -S grml-zsh-config 之后就好了。grml 本身也非常轻量

我也是cmd日常,不在命令行使用emacs,感觉基本满足需求

交互都是 zsh,自己几年前写的 zsh-prompt,核心配置一共就一百来行

  • 无包管理器
  • 自己写的 prompt,异步 git 状态加载
  • 纯 zsh 实现(windows 上用 msys2 也直接带过来用)
  • 使用 fzf 做历史目录和历史命令补全

脚本都是 bash,也是之前写的用 fzf 来做 cheatsheet 查询的东西

1 个赞

alacritty + fish + starship

bash/eshell,配上个脚本

if [ -z "$TTY" ]; then
  TTY=/dev/tty
fi

while getopts "q:" opt; do
  case $opt in
    q)
	  QUERY="$OPTARG"
      ;;
    *)
	  ;;
  esac
done

INPUT="$(mktemp)"
OUTPUT="$(mktemp)"
cat > "$INPUT"

# check ~/.emacs.d/init.el for MY_MINI
MY_MINI=true emacs -nw --eval "\
(with-temp-buffer
  (insert-file-contents \"$INPUT\")
  (let* ((lines (split-string (buffer-string) \"\n\" t))
         (selection (completing-read \"Select: \" lines nil nil \"$QUERY\")))
    (with-temp-file \"$OUTPUT\"
      (insert selection)))
	  (kill-emacs))
" < "$TTY"
# (delete-frame) for emacsclient

cat "$OUTPUT"

rm -f "$INPUT" "$OUTPUT"
exit 0

脚本看情况,

  1. linux桌面的功能性脚本,不复杂dash
  2. 复杂点的python/elisp