Fish、zsh 和 bash 可以导入相同的配置文件吗?

mol*_*han 8 linux bash fish

我最近一直在尝试从 切换bashzsh, 或fish

我有一些 alisa 和 PATH 设置,但我不想手动将它们复制到zshrcor config.fish

我尝试将它们写入一个文件中并使用source ~/.myshrc它们。

可以alisa statement正常采购。但是当采购PATH鱼壳时我遇到了错误:

在fish中,请使用{$JAVA_HOME}。导出
CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib

我知道 Fish 和 bash 语法不兼容。

那么是否有一个通用语法允许我修改 myshrc 中的 PATH,然后所有三个 shell 都可以使用它?

myshrc像这样的文件:

# alias 
alias apts="apt search"
alias sf="aptitude search -F '%c %p %d %D %I'"
alias apti="sudo aptitude install"
alias aptup="sudo aptitude update"
alias aptgr="sudo aptitude upgrade"
alias aptpu="sudo aptitude purge"

# transset xterm
transset -t -a 0.95 >> /dev/null 2>&1


# set npm path
export PATH=~/.npm-global/bin:$PATH

# set java path
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 
export JRE_HOME=${java_home}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

# set android path
export ANDROID_HOME="/home/moly/Launcher/AndroidSDK/"
export PATH="${PATH}:${ANDROID_HOME}tools/:${ANDROID_HOME}platform-tools/"

Run Code Online (Sandbox Code Playgroud)

Mat*_*atf 5

在尝试转换到新 shell 时使用现有配置的一种巧妙方法是简单地以fish结束,如下所示:~/.bashrcfish

# alias 
alias apts="apt search"
alias sf="aptitude search -F '%c %p %d %D %I'"
alias apti="sudo aptitude install"
alias aptup="sudo aptitude update"
alias aptgr="sudo aptitude upgrade"
alias aptpu="sudo aptitude purge"

# transset xterm
transset -t -a 0.95 >> /dev/null 2>&1


# set npm path
export PATH=~/.npm-global/bin:$PATH

# set java path
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 
export JRE_HOME=${java_home}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

# set android path
export ANDROID_HOME="/home/moly/Launcher/AndroidSDK/"
export PATH="${PATH}:${ANDROID_HOME}tools/:${ANDROID_HOME}platform-tools/"

# start fish
exec fish
Run Code Online (Sandbox Code Playgroud)

我不认为这是一个非常好的解决方案,但这是我所知道的唯一一个可以fish继承您的bash环境而无需重写/翻译您的bashrc. 虽然这可能是不好的做法,并且可能会导致其他类型的问题,但从短期来看,如果您只想使用fish别名在已知领域进行尝试,PATH而不花时间编写配置文件,这可能就是您所需要的。

我没有经验zsh,也不知道它是否可以同样继承bash这样的环境,但如果可以的话,我不会感到惊讶。