Fish-shell 无法识别 .bashrc 导出

Fish-shell 无法识别 .bashrc 导出

我需要在 Ubuntu 上为我的大学安装几个程序,这些程序需要额外的行,.bashrc如下所示

if [ -d /opt/pic32mx/bin ] ; then
 export PATH=$PATH:/opt/pic32mx/bin
fi 

export CLASSPATH=".:/usr/local/lib/antlr-4.9.2-complete.jar:/usr/local/lib/ST-4.3.1.jar:"
export ANTLR4_PATH="/usr/local/lib"

看来 fish-shell 无法识别这些导出,因此无法运行命令,如果我想运行它,我必须转到我的 bash。有没有一个简单的解决方案,让 fish 能够识别命令并像我的 bash 一样正常工作?

答案1

鱼类用途命令set用于设置变量。

此外,最近添加的fish_add_path命令可用于将目录添加到 PATH。如果您使用的是旧版本的 fish,请使用fish_user_paths所述目录在教程中

注意鱼会做一些有趣的事情以 *PATH 结尾的变量——它假定其他进程需要一个以冒号分隔的目录列表,所以它提供了以下内容:

$ set -gx FOO_PATH foo bar baz

$ set --show FOO_PATH
$FOO_PATH: set in global scope, exported, a path variable with 3 elements
$FOO_PATH[1]: |foo|
$FOO_PATH[2]: |bar|
$FOO_PATH[3]: |baz|

$ bash -c 'declare -p FOO_PATH'
declare -x FOO_PATH="foo:bar:baz"

解决方案是将 bash 命令转换为 fish 命令,并将它们存储在您的~/.config/fish/config.fish文件中:

if [ -d /opt/pic32mx/bin ] 
  set fish_user_paths $fish_user_paths /opt/pic32mx/bin
end 

set -gx CLASSPATH   . /usr/local/lib/antlr-4.9.2-complete.jar /usr/local/lib/ST-4.3.1.jar ""
set -gx ANTLR4_PATH /usr/local/lib

相关内容