linux - fish、zsh、bash 可以导入同一个配置文件吗?

标签 linux bash fish

我最近一直在尝试从 bash 切换到 zshfish

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

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

alisa语句可以正常获取。但是当在 fish shell 中获取 PATH 时,我得到了一个错误:

In fish, please use {$JAVA_HOME}. export
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/"

最佳答案

在尝试转换到像 fish 这样的新 shell 时,使用现有配置的一种 hacky 方法是简单地用 fish< 结束 ~/.bashrc/,像这样:

# 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

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

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

关于linux - fish、zsh、bash 可以导入同一个配置文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70783183/

相关文章:

linux - 在 Bash 中复制和重命名脚本

bash - 从 PL/SQL Developer 和 SQL*plus 调用时,存储过程没有相同的结果

shell - 使用fish shell修改PATH

bash - 可以更改 fish shell 中的选项卡完成行为吗?

linux - 使用单个请求获取 haproxy 两次日志

c++ - 如何使用 recvfrom 获取 AF_INET6 套接字的地址

Python optparse 不接受选项

linux - 如何使用 yum 仅从 Centos 5.4 而不是最新版本下载软件

linux - 使用 sed 删除 CIDR

shell - 在 Cygwin 下编译 fish shell?