Wiederverwenden von .bash_profile f├╝r Fische in Mac - mac, bash, terminal, iterm, fish

Ich benutze iTerm auf meinem Mac und habe eine.bash_profile, das ich bequem benutzt habe. Ich habe k├╝rzlich von Fish Bash erfahren und es auf meinem Mac installiert und pl├Âtzlich wird mein .bash_profile nicht mehr bezogen. Irgendwelche Ideen, warum ich es nicht sehen konnte?

Wie k├Ânnte ich mein iTerm und meinen Fisch anweisen, mein .bach_profile zu beziehen, wie es vorher ohne Fisch geschah?

Antworten:

6 f├╝r Antwort Ôäľ 1

Fish hat genau eine benutzergesteuerte KonfigurationsdateiDer Name lautet standardm├Ą├čig $ HOME / .config / fish / config.fish. Fish hat auch einen Exportbefehl f├╝r die Kompatibilit├Ąt mit bash / zsh / sh, aber es ist nur eine d├╝nne H├╝lle um die Fischform:

set -gx VAR value

F├╝r Bash-Aliase haben Sie zwei M├Âglichkeiten: Sie k├Ânnen sie in Abk├╝rzungen (siehe Befehl "abbr") oder Funktionen umwandeln. In Fisch k├Ânnen Sie eine Funktion mit ihrem "Alias" -Befehl definieren, aber das dreht sich einfach

alias myalias some_command --arg1 --arg2

in

function myalias; some_command --arg1 --arg2 $argv; end

Als Glenn Jackman wies "Fisch ist nicht bash". Es ist keine verbesserte Bash. Der Wechsel zu Fisch ist nicht schwer, erfordert aber ein wenig Aufwand. Ich habe den Wechsel vor 13 Monaten vorgenommen und denke, er ist den Aufwand wert.


2 f├╝r Antwort Ôäľ 2

Sie k├Ânnen dieses Skript von verwenden ├╝berbewerten: [Hauptlink]

Es analysiert im Grunde genommen .bash_profile und setzt dieselben Umgebungsvariablen in Fish.
Funktioniert super f├╝r mich!

# Fish shell

egrep "^export " ~/.bash_profile | while read e
set var (echo $e | sed -E "s/^export ([A-Za-z_]+)=(.*)$/1/")
set value (echo $e | sed -E "s/^export ([A-Za-z_]+)=(.*)$/2/")

# remove surrounding quotes if existing
set value (echo $value | sed -E "s/^"(.*)"$/1/")

if test $var = "PATH"
# replace ":" by spaces. this is how PATH looks for Fish
set value (echo $value | sed -E "s/:/ /g")

# use eval because we need to expand the value
eval set -xg $var $value

continue
end

# evaluate variables. we can use eval because we most likely just used "$var"
set value (eval echo $value)

#echo "set -xg "$var" "$value" (via "$e")"
set -xg $var $value
end