我的 Shell 迁移记录

图片来源: Fish shell logo

目录

从bash到zsh

虽然我使用zsh shell两周后就换到fish shell了(关于fish shell下面有专门介绍), 但这并不否认zsh shell仍然是个很好的shell。 你可以通过下面的方式从任意的shell切换至zsh shell。

  • 安装zsh时通过下面的指令:

  brew install zsh (MacOS)
  apt install zsh (Ubuntu / Linux Mint)
  • 如果你想要知道现在系统裡已经安装好的shell,输入下面的指令:

  cat /etc/shells
  • 如何将zsh作为你默认的shell呢?,输入下面的指令:

  chsh -s /usr/local/bin/zsh
  • 关于配置文件的读取错误

Shell 脚本解释出错时可以查看一下当前所使用的 sh 路径, 比如有可能是 sh 指向了 dash 导致出错。 通过下面的语句查看。

  ls -l `which sh`
  • 脚本解释器在语法上的不同点

从传统的 bash 等 shell 换到 zsh 时会发现集合的第一个元素的索引是从 1 开始的, 如果希望从 0 开始,在配置文件中配置下面语句即可。

  • Fix array index for zsh:

  if [ "$ZSH_NAME" = "zsh" ];then
      setopt localoptions ksharrays
  fi

配置 zsh shell

与 bash 的 .bashrc 类似, zsh 的配置也需要一个配置文件, 这个文件是在用户目录下的 .zshrc 文件, 如果你不想自己写配置,点击这里打开我上传到 Github 的配置文件下载使用。

从zsh到fish

使用zsh shell之后大概两週我就换到fish shell了, 这不是因为zsh不好,而是fish天然的完成度和易用性吸引了我, 转移到fish环境后,有关shell折腾算是告一段落,以下对该过程纪录。

fish shell的安装以及默认shell的切换

这个上面提到过,这里具体针对不同的操作系统所需要执行的指令进行介绍。

  • MacOS:

  brew install fish
  • Ubuntu/Linux Mint:

  apt install fish
  • OpenSUSE:

  sudo zypper install fish

如果是运行在 Windows 下的 OpenSUSE 环境, 则可能需要 root 权限,这时在命令前面加上 sudo 。 通过下面的语句查看当前系统所使用的 Shell。

  cat /etc/shells

如果显示你的fish shell在 /usr/bin/fish , 那么执行下面的语句切换其为默认shell(权限不足则补充 sudo ):

  chsh -s /usr/bin/fish

现在重新打开一个终端会话会发现默认 Shell 已经切换到 Fish shell 了。 如果打开 Fish shell 后马上报很多关于 hostname 的错误, 说明当前环境缺少一个叫做 hostname 的包, 那么使用当前 Linux 发行版的包管理器安装 hostname , 例如在 OpenSUSE 下使用:

  sudo zypper install hostname

Fish shell 的配置

我写好的配置上传在了Github,点击这里查看我的配置。

在fish shell下使用python时的常见问题

目前我遇到的比较需要注意的问题有下面两点:

  • 关于 tmux

tmux在后台存在session的时候, 即使更新=PYTHONPATH=环境变量也不会生效, 此时需要关闭tmux的所有进程,更新才会生效。 除fish以外其他shell环境应该也会遇到, 我是在fish首次出现,留作纪录。

  • 关于 PYTHONPATH

Fish shell 中定义环境变量的方式为 set <variable_name> <parameter_1> <parameter_2> 这种方式有很大的优越性而且非常方便, 然而对于 PYTHONPATH , 则 set PYTHONPATH <parameter_1>:<parameter_2> 的方式更具有通用性。 原因为,经过测试在 MacOS 下两种方式均可正常使用, 但在运行在 Jetson Nano 上的 Ubuntu 下测试时,只有第二种方式可用。 具体原因尚未明确,有可能时操作系统不同的原因, 也可能是 Python 版本不同造成的 (比如版本号相同,但处理器架构不同造成了编译方式的差异导致该问题)。

编辑本页

Xin Li
Xin Li
讲师

主要研究方向为机器学习、深度学习与人工智能在各个领域的应用,特长为针对非均匀数据及偏移数据的优先采样及学习算法。了解更多

comments powered by Disqus
下一页
上一页

相关