我最近一直在尝试从 切换bash到zsh, 或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)
在尝试转换到新 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这样的环境,但如果可以的话,我不会感到惊讶。