我想要在最新安装的RHEL8中安装fish shell应该如何去做呢?
问题描述:
在fish官网中发现没有提供RHEL8/CENTOS8的下载
http://fishshell.com/
如果直接配置软件源或者直接下载安装包安装会遇到如下的python错误
出现这个的原因在于,对于RHEL8中的python并没有默认的命令,也就是说没有/usr/bin/python而是只有/usr/bin/python2或者/usr/bin/python36这种严格的命令,我觉得可能处于这个原因导致安装时提示python有问题。
解决方法:
下面通过源码安装,找一个发布比较近的版本的源码下载下来
https://github.com/fish-shell...
按照官网上说的解压后编译安装cmake .; make; sudo make install
我安装的时候也遇到了错误
查询后发现是缺少依赖
需要安装如下的包rm CMakeCache.txt
sudo yum install ncurses-devel bison
安装完之后再make就可以成功安装了
安装后执行命令在/usr/local/bin/fish
如何配置fish使其对root用户生效?
安装完fish后有些麻烦,一个是/usr/local/bin/fish只在普通用户的命名空间PATH中,而root用户中没有,所以就用不了,因此可以通过创建软连接到/usr/bin/fish或者将/usr/local/bin加入到root用户的PATH中去
我又遇到一个问题是fish_config执行出错,在fish shell中fish_config命令可以提供一个web页面来配置,但执行的时候出错了
我觉得是httpd问题,没装httpd,后来安装了也不管用,再后来觉得是端口问题,8000端口也没什么问题,暂时不知道原因。
但是我的目的是配置fish shell,我正好有原来的fish shell配置,所以想直接修改配置文件
我参考了这篇文档
https://www.cnblogs.com/sytfy...
fish的配置文件目录为~/.config/fish/
刚安装完目录下只有一个文件~/.config/fish/fish_variables
需要新建一个functions文件夹和一个配置文件
├── fish_variables
└── functions
└── functions/fish_prompt.fish
拷贝一份喜欢的配置文件到fish_prompt.fish中
我比较喜欢的配置文件是
function fish_prompt
# This prompt shows:
# - green lines if the last return command is OK, red otherwise
# - your user name, in red if root or yellow otherwise
# - your hostname, in cyan if ssh or blue otherwise
# - the current path (with prompt_pwd)
# - date +%X
# - the current virtual environment, if any
# - the current git status, if any, with fish_git_prompt
# - the current battery state, if any, and if your power cable is unplugged, and if you have "acpi"
# - current background jobs, if any
# It goes from:
# ┬─[nim@Hattori:~]─[11:39:00]
# ╰─>$ echo here
# To:
# ┬─[nim@Hattori:~/w/dashboard]─[11:37:14]─[V:django20]─[G:master↑1|●1✚1…1]─[B:85%, 05:41:42 remaining]
# │ 2 15054 0% arrêtée sleep 100000
# │ 1 15048 0% arrêtée sleep 100000
# ╰─>$ echo there
set -l retc red
test $status = 0; and set retc green
set -q __fish_git_prompt_showupstream
or set -g __fish_git_prompt_showupstream auto
function _nim_prompt_wrapper
set retc $argv[1]
set field_name $argv[2]
set field_value $argv[3]
set_color normal
set_color $retc
echo -n '─'
set_color -o green
echo -n '['
set_color normal
test -n $field_name
and echo -n $field_name:
set_color $retc
echo -n $field_value
set_color -o green
echo -n ']'
end
set_color $retc
echo -n '┬─'
set_color -o green
echo -n [
if test "$USER" = root -o "$USER" = toor
set_color -o red
else
set_color -o yellow
end
echo -n $USER
set_color -o white
echo -n @
if [ -z "$SSH_CLIENT" ]
set_color -o blue
else
set_color -o cyan
end
echo -n (prompt_hostname)
set_color -o white
echo -n :(prompt_pwd)
set_color -o green
echo -n ']'
# Date
_nim_prompt_wrapper $retc '' (date +%X)
# Virtual Environment
set -q VIRTUAL_ENV_DISABLE_PROMPT
or set -g VIRTUAL_ENV_DISABLE_PROMPT true
set -q VIRTUAL_ENV
and _nim_prompt_wrapper $retc V (basename "$VIRTUAL_ENV")
# git
#set prompt_git (fish_git_prompt | string trim -c ' ()')
#test -n "$prompt_git"
#and _nim_prompt_wrapper $retc G $prompt_git
# Battery status
type -q acpi
and test (acpi -a 2> /dev/null | string match -r off)
and _nim_prompt_wrapper $retc B (acpi -b | cut -d' ' -f 4-)
# New line
echo
# Background jobs
set_color normal
for job in (jobs)
set_color $retc
echo -n '│ '
set_color brown
echo $job
end
set_color normal
set_color $retc
echo -n '╰─>'
set_color -o red
echo -n '$ '
set_color normal
end
然后发现目录总是缩写不太喜欢,也可以根据配置文件手动修改
修改/usr/local/share/fish/functions/prompt_pwd.fish
将缩写注释掉
保存退出后就可以生效了
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。