LoginSignup
11
7

More than 3 years have passed since last update.

軽い気持ちで fish に入門してみた。(install から alias PATH の設定まで)

Last updated at Posted at 2019-08-25

はじめに

最近、自分らのチームに導入していただいた Linux Server に
GPU 付きの KVM を立てられるように環境構築をしているのですが、

これがどうにもうまくいかず、作業が煮詰まってきたので、
気分を変えるために shell を変えよう! (意味不明) という気持ちになって、
軽い気持ちで fish を使い始めました。

その時の使い方や設定に関するメモを残したものです。

以降、面白そうなことがわかったら追記予定です。

軽い気持ちで始める fish (install から)

  • 以降本文です。

  • 何よりまずは install です。

    • $ sudo apt install fish
    • OS は ubuntu を使っているので apt で install します。

      • ここは $ fish として、fish がまだインストールされていない場合は、出力でサジェストされるのではないかと思いますので、迷ったらまず fish を実行してみてください。

他のシェルから一時的に fish を使う

  • $ fish で実行

fish の 設定ファイル

  • ls -A してもないので作成
    • touch ~/.fishrc するのかと思ったら、別で指定する場所がある?!
    • ちなみに ユーザのホームディレクトリ下に .fishrc とか fish.conf みたいなファイルを作って source すれば動くのかもわかりませんが、現段階では未検証です。

書く場所が他の shell と違うという情報

  • どこに設定を書くのか分からない
    • そもそも設定ファイルの場所が大きく異なります。
    • .zshrc.zprofile のように .fishrc.fishprofile なのかと思っていました。
    • しかし、実際は全く違っていて ~/.config/fish/config.fish という1つのファイルに設定を書きます。
  • とのことでしたので、まずはこの設定ファイルがあるか確認しに行きます。

    • ~> ls .config/fish/fishd.PcName
    • というファイルがありました。

      • ここで 注意 なのですが、自分で alias などを登録する場合は、 ここではなく、自分で設定ファイルを新しく作る ことになります。
      • このファイルには

        # This file is automatically generated by the fish.
        # Do NOT edit it directly, your changes will be overwritten.
        
      • のように、「いじるな」って書いてありました。

      • 最初ここに書いて動かなくて、がっつり無視してごめんなさい..という気持ちになりました。

alias を登録してみる

  • 設定ファイルを .config/fish/ 下に新しく作った。

    • user@PcName ~> touch .config/fish/config.fish
    • user@PcName ~> emacs .config/fish/config.fish

      • 以下の内容を記載 (エディタはお好みで..)

        # alias
        alias l 'ls -CF'
        
      • ちなみに、なんで l を登録したかというと la とか ll とかは既に動く(割り当てられている) からです。

      • あまり alias とか登録してない初心者() なので、温かい目で見てほしいです..

  • どう読み込めばいいのかわからないので shell 再起動してみる。

    • ~> exec $SHELL -l
    • 怒られた。

      fish: Variables may not be used as commands. In fish, please define a function or use 'eval $SHELL'.
      exec $SHELL -l
           ^
      
      • 「変数 $SHELL が未定義です」だと..
  • user@PcName ~> echo $SHELL

    /usr/bin/fish
    
    • いや入ってるじゃんか。
    • Variables may not be used as commands
      • え? 変数をコマンド内で使えないの..?
    • sudachi@sudachi-dynabook-R734-M ~> exec /usr/bin/fish -l

      Welcome to fish, the friendly interactive shell
      
    • ほんとだ。指定したら実行できた。

    • ちなみに、以下の方法で、設定ファイルを再読み込みできます。

      • user@PcName ~> source .config/fish/config.fish
    • user@PcName ~> l

      Desktop/    backup/  doc/              jupyter-working/  public_html/
      anaconda3/  dls/  examples.desktop  memo/             share/
      
      • 動いた!!
  • ということで alias の登録方法はわかった。(こととする)

  • 数少ない alias を登録

    • 僕が登録している alias はせいぜいこれくらいなので、登録しておきます..

      # alias
      alias l 'ls -CF'
      alias rm "rm -i"
      alias cp "cp -i"
      alias mv "mv -i"
      

PATH の設定

  • .bashrc.zshrc とは構文が異なる、そうです。

    # PATH
    set -x PATH /path/to/hogehoge $PATH
    
    • のように書く、そうです。

とりあえず、anaconda を動かすまで作業をする。

  • 個人的に Python をよく書くので、anaconda が使えるようにしたいです。

  • conda が動くように PATH を通す

    • 現状 : user@PcName ~> conda

      conda: コマンドが見つかりません

    • .bashrc の PATH を見に行ってみる

      export PATH="/home/user/anaconda3/bin:$PATH"
      
    • .config/fish/config.fish に以下の内容を追記してみる。

      set -x PATH /home/user/anaconda3/bin $PATH
      
    • user@PcName ~> conda -V

      conda 4.7.10

      • お。いいね。
  • conda activate できるように conda init する。

    • user@PcName ~> conda init fish

      modified      /home/sudachi/.config/fish/config.fish
      
      • modify する場所はいい感じです。
    • user@PcName ~> source .config/fish/config.fish

      sudachi@sudachi-dynabook-R734-M ~>                        (base)
      
      • え。そこに出るの..??
    • user@PcName ~> conda activate tenfl (base)

      user@PcName ~>                       (tenfl)
      
    • user@PcName ~> which python (tenfl)

      /home/user/anaconda3/envs/tenfl/bin/python
      
    • 使えてるし..

    • カッコ悪い感と、見にくい感は否めないですが、まあいいか。

  • とりあえず、使えることには使えるようなのでこれにて終了。

注意

  • conda init fish をした後、source をしてもうまく conda activate などができない場合があります (正直言って理由は謎..私にはよくわからない)
  • その場合は conda init で追記された内容を全て消し、conda 自体の PAHT の下に以下のように追記してみてください。
   set -x PATH /home/user/anaconda3/bin $PATH
   source (conda info --root)/etc/fish/conf.d/conda.fish
  • 変更後は source ~/.config/fish/config.fish をお忘れなく。

    • 最初の set -x PATH /home/user/anaconda3/bin $PATH を消してしまい、fish に login すると返答が返って来なくなるかもしれませんので注意してください。

実用に向けてはまだまだ勉強中...

  • shell の設定って、とりあえず 「alias」 と 「PATH」 が書ければ概ねどうにかなるやろ、と思っている過激派初心者なので、今回はその2点を中心にまとめてみました。

  • 上段でも書きましたが、面白いことがあれば追記予定です。

    • 詳しい方おられましたら、ご教授お待ちしております..

Links

11
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
7