LoginSignup
0
2

More than 5 years have passed since last update.

macOS上のfishと他シェルで$PATH共有

Last updated at Posted at 2019-02-02

ツッコミ歓迎.

まずは現状での最終形態

以下のようなシェルスクリプトを作成:

#!/bin/sh
. /etc/profile
. 共有したいPATHを記述した設定ファイル
FISH_PATH_TMP=$PATH /usr/local/bin/fish --init-command='set PATH $FISH_PATH_TMP' "$@"

これをデフォルトシェルに設定する.

※ ここでは /etc/profile は変更されていないものとする.
※ 「共有したいPATHを記述した設定ファイル」は他シェルの設定ファイルでも読み込まれるようにしておくこと.

どうしてこうなった?

  • fish は Bourne Shell 系ではないので, PATH の設定ひとつとっても書式が違う. よって単純に設定ファイルの分割だけでは共有できない.
  • でも親シェルで設定した環境変数は引き継ぐので, fish をサブシェルとして起動すれば PATH を引き継げる.
  • しかし macOS の場合, その方法だと /usr/bin などの標準的なものより優先したいパスがある場合もサブシェルとして fish が起動した際に /etc/paths が再読込されてしまい, 元のパスが後ろに来てしまう.
  • なので, 一旦 PATH を別の環境変数に退避し, fish 起動後に復元している.
0
2
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
0
2