【发布时间】:2022-01-20 08:50:31
【问题描述】:
我最近一直在尝试从bash 切换到zsh 或fish。
我有一些 alisa 和 PATH 设置,但我不想手动将它们复制到 zshrc 或 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/"
【问题讨论】:
-
不存在类似“配置文件”的东西。 “.bashrc”可以包含任何复杂性的任何代码,它是一个程序。如果你想在另一个解释器中运行为 Bash 编写的程序,你必须交叉编译它。如果您想将自己限制为像属性文件这样的简单键值列表,则必须为 Bash 和 Fish 编写两个解析器来读取文件,以便设置别名和环境变量。
-
请注意,fish 语法与 bash 和 zsh 使用的 POSIX shell 语法不兼容。所以,不,除了极其微不足道的 .bashrc 之外,您不能将其内容用作 config.fish。此外,bash 和 fish
alias命令不做同样的事情;尽管它们足够相似,以至于您通常可以忽略差异。