MacでiTermを使用していますが、快適に使用している.bash_profileがあります。最近、fish bashについて知り、Macにインストールしましたが、突然、.bash_profileが読み込まれなくなりました。なぜ私がそれを見ることができなかったのかに関するアイデアはありますか?
以前は魚なしで行っていたように、iTermと魚に.bach_profileを取得するように指示するにはどうすればよいですか?
Fishには、デフォルトで$ HOME/.config/fish/config.fishという名前のユーザー制御構成ファイルが1つだけあります。 Fishには、bash/zsh/shとの互換性のためのエクスポートコマンドもありますが、fishフォームの薄いラッパーにすぎません。
set -gx VAR value
Bashエイリアスに関しては、2つの選択肢があります。それらを省略形(「abbr」コマンドを参照)または関数に変換します。魚では、「エイリアス」コマンドで関数を定義できますが、それは単に
alias myalias some_command --arg1 --arg2
に
function myalias; some_command --arg1 --arg2 $argv; end
Glenn Jackmanが指摘したように、「魚は強打ではない」。改良されたbashではありません。魚に切り替えるのは難しいことではありませんが、少しの努力が必要です。私は13か月前に切り替えを行いましたが、努力する価値はあります。
このスクリプトは overtrue で使用できます: [Gist link]
基本的に.bash_profileを解析し、Fishに同じ環境変数を設定します。
私にとってはうまくいきます!
# 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