Shell安装使用

最近WebShell在支持各Shell函数钩子时遇到了些问题,针对各Shell的安装使用做个记录,以便后续使用。

这里以Ubuntu为例

Bash

1
2
3
chsh -s $(which bash)
# 版本
bash --version

Zsh

1
2
3
4
5
sudo apt install zsh
chsh -s $(which zsh)

# 版本
zsh --version

Fish

1
2
sudo apt install fish
sudo chsh -s $(which fish)

Tcsh

1
2
sudo apt install tcsh
chsh -s $(which tcsh)

一些区别

  1. bash,zsh在printf "PreExecMarker;$1";打印字符串时不会对参数进行转义,导致可能会出现报错,但是对于fish,tcsh会自动转义,不存在问题。举个例子$1是date +%Y

    https://static.1991421.cn/2023/2023-10-31-195452.jpeg

​ 解决办法是printf "PreExecMarker;%s" "date +%Y";

https://static.1991421.cn/2023/2023-10-31-195625.jpeg