📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

198行目: 198行目:
  # 方法 2 (a) : Bash / Zsh
  # 方法 2 (a) : Bash / Zsh
   
   
  function cd()
  function check_venv()
  {
  {
    builtin cd "$@"
    # 新しいディレクトリに仮想環境が存在するか確認
     if [ -d "venv" ]; then
     if [ -d "venv" ]; then
      # 既に仮想環境がアクティブでない場合のみアクティベート
       if [ -z "$VIRTUAL_ENV" ]; then
       if [ -z "$VIRTUAL_ENV" ]; then
           source venv/bin/activate
           source venv/bin/activate
      # 異なる仮想環境に切り替える場合
       elif [ "$VIRTUAL_ENV" != "$PWD/venv" ]; then
       elif [ "$VIRTUAL_ENV" != "$PWD/venv" ]; then
           deactivate
           deactivate
           source venv/bin/activate
           source venv/bin/activate
       fi
       fi
    # venvディレクトリが存在しない場合、アクティブな仮想環境があれば無効化
     elif [ -n "$VIRTUAL_ENV" ]; then
     elif [ -n "$VIRTUAL_ENV" ]; then
       deactivate
       deactivate
     fi
     fi
  }
  }
function cd()
{
    builtin cd "$@"
    check_venv
}
# プロンプト表示前に毎回チェック
PROMPT_COMMAND="check_venv${PROMPT_COMMAND:+;$PROMPT_COMMAND}"
# シェル起動時にもチェック
check_venv
  </syntaxhighlight>
  </syntaxhighlight>
<br>
<br>
* プロジェクトディレクトリに入った時のみ自動的にアクティベートする方法
* プロジェクトディレクトリに入った時のみ自動的にアクティベートする方法
*: ~/.config/fish/config.fishファイルに記述する。
*: ~/.config/fish/config.fishファイル および ~/.config/fish/functions/check_venv.fishファイル に記述する。
  <syntaxhighlight lang="fish">
  <syntaxhighlight lang="fish">
  # 方法 2 (b) : Fish
  # 方法 2 (b) : Fish
   
   
  function cd
  # ~/.config/fish/config.fishファイル
    # 現在アクティブな仮想環境のパスを記録
  check_venv
    set -l prev_venv "$VIRTUAL_ENV"
   
    builtin cd $argv
   
   
    # 新しいディレクトリに仮想環境が存在するか確認
# ~/.config/fish/functions/check_venv.fishファイル
function check_venv --on-variable PWD --on-event fish_prompt
     if test -d "venv"
     if test -d "venv"
      # 既に仮想環境がアクティブでない場合のみアクティベート
       if test -z "$VIRTUAL_ENV"
       if test -z "$VIRTUAL_ENV"
           source venv/bin/activate.fish
           source venv/bin/activate.fish
      # 異なる仮想環境に切り替える場合
       else if test "$VIRTUAL_ENV" != "$PWD/venv"
       else if test "$VIRTUAL_ENV" != "$PWD/venv"
           deactivate
           deactivate
           source venv/bin/activate.fish
           source venv/bin/activate.fish
       end
       end
    # venvディレクトリが存在しない場合、アクティブな仮想環境があれば無効化
     else if test -n "$VIRTUAL_ENV"
     else if test -n "$VIRTUAL_ENV"
       deactivate
       deactivate
     end
     end
end
function cd
    builtin cd $argv
  end
  end
  </syntaxhighlight>
  </syntaxhighlight>