用不同的配置文件夹启动鱼壳

时间:2019-02-27 21:45:08

标签: shell fish

是否可以启动fish shell指向另一个配置目录,然后指向默认的~/.config/fish

我正在尝试在不同用户之间的多用户系统中具有相同的外壳体验(例如sudo -u <user> fish具有相同的别名/功能等,就像我的用户一样)。但是也可以采用非持久方式进行操作,因为系统中的其他用户可能对我的设置不感兴趣。

到目前为止,我的想法是:

  1. 提供我的配置==>无法使用自动加载功能(如~/.config/fish/functions/)的问题
  2. 符号链接我的配置目录==>不是持久的,但到目前为止是最接近的功能解决方案

2 个答案:

答案 0 :(得分:1)

从您对Glenn提供的答案的评论中可以清楚地看出,您最初的问题遗漏了一些重要信息。如果您正在使用具有其他sudo -u $some_user用户的系统,则不应符号链接到您的个人配置文件。相反,只要利用fish符合XDG Base Directory规范这一事实即可。在开始钓鱼之前,只需将env var XDG_CONFIG_HOME设置为您的真实家庭目录。例如,

sudo -u $some_user /bin/sh -c "XDG_CONFIG_HOME=$HOME/.config fish"

答案 1 :(得分:0)

您可以将所有常见内容放在一个公共目录中,也许

/opt/fish_config/config.fish
/opt/fish_config/functions/
/opt/fish_config/completions/

然后在您可以放置​​的任何〜/ .config / fish / config.fish中:

source /opt/fish_config/config.fish

以及/opt/fish_config/config.fish中,除了您自己的鱼肉外,请确保添加:

set fish_function_path $fish_function_path /opt/fish_config/functions
set fish_complete_path $fish_complete_path /opt/fish_config/completions

使用符号链接可能更容易,尽管文件权限可能是个问题。

就个人而言,尽管我没有在同一台计算机上的多个用户之间共享我的配置,但是我在多台计算机上共享我的配置:我的fish配置位于git中,并且我将〜/ .config / fish符号链接到git目录。