본문 바로가기

카테고리 없음

fish shell 에 환경변수 세팅하기

728x90

필자는 fish shell 의 직관적이고 빠른 속도에 매우 만족하며 사용중이다.

보통 한국에서 검색을 하면 bash shell 의 대체제로 zsh 및 oh-my-zsh 를 쓰라고 많이들 하는데 어쩌다 fish shell 과 oh-my-fish 를 알게 되고나선 fish shell 만 주구장창 쓴다.

근데 보통 fish shell 쓸 때는 2가지에서 막히는데

1. chsh 명령어가 안먹는 경우 

보통 chsh(change shell 의 약어로 보임) 명령어가 잘 안먹을텐데, 이건 

$ chsh -s /usr/local/bin/fish

이게 non standard shell 이라면서 튕기는 경우일 것이다. 

맥에서 Mojave 이후 그럴 경우 

 

$ vi /etc/shells

/etc/shells 를 열어보면 standard shell 이라고 잡아놓은 shell 들 목록이 있는데 거기다가 이번에 깐 fish shell 을 맨 밑에 추가해주면 chsh 명령어가 먹힐 것이다.

/bin/bash
/bin/csh
/bin/dash
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh
/usr/local/bin/fish # 이 라인을 추가해주었다.

 

 

2. 이런저런 환경변수 세팅 하고 싶은데 보통 문서들이 zsh 의 zshrc 파일 고치는거나 bash-profile 고치는것만 알려주고 fish shell 에서는 어떻게 하는지 잘 안알려준다.

 

 

 

zsh, bash shell 세팅은 다음과 같다. - 보통 이렇게 문서를 준다.

export ANDROID_HOME=$HOME/Library/Android/sdk
export PATH=$PATH:$ANDROID_HOME/emulator
export PATH=$PATH:$ANDROID_HOME/tools
export PATH=$PATH:$ANDROID_HOME/tools/bin
export PATH=$PATH:$ANDROID_HOME/platform-tools

이것만 보면 fish shell 에서는 세팅이 같은 명령어로는 불가능하기에 리액트 네이티브 환경 세팅 시 (안드로이드 sdk 및 cli 툴용 환경변수가 필요) 내 컴퓨터에 환경변수 세팅을 어떻게 했는지 적어둔다. 

 

맥 환경에서 omf (oh my fish) 까지 세팅한 경우 환경세팅을 해줘야하는 파일은 ~/.config 파일에 존재한다.

# Path to Oh My Fish install.
set -q XDG_DATA_HOME
  and set -gx OMF_PATH "$XDG_DATA_HOME/omf"
  or set -gx OMF_PATH "$HOME/.local/share/omf"

# Load Oh My Fish configuration.
source $OMF_PATH/init.fish

set --export ANDROID $HOME/Library/Android;
set --export ANDROID_HOME $ANDROID/sdk;
set -gx PATH $ANDROID_HOME/tools $PATH;
set -gx PATH $ANDROID_HOME/tools/bin $PATH;
set -gx PATH $ANDROID_HOME/platform-tools $PATH;
set -gx PATH $ANDROID_HOME/emulator $PATH;

set --export JAVA_HOME /Applications/Android\ Studio.app/Contents/jre/jdk/Contents/Home;
set -gx PATH $JAVA_HOME/bin $PATH;

위의 예시를 보면 밑에 set --export ANDROID $HOME/Library/Android; 요 명령어부터 보자. 이건 ANDROID 라는 환경변수 ($ANDROID) 가 $HOME/Library/Android 디렉토리를 가리킨다는 이야기이다.

 

뒤에 명령어 set --export ANDROID_HOME $ANDROID/sdk; 이것은 앞으로 ($ANDROID_HOME) 환경변수는 위에서 설정한 $ANDROID 에 뒤에 /sdk 를 붙인 디렉토리를 의미한다.

 

위의 fishshell 예시에서는

$ANDROID

$ANDROID_HOME

$JAVA_HOME

이 3가지 환경변수로 만들어주었다.

 

이렇게 --export 명령어를 이용해서 환경변수를 세팅해준다음에 $PATH 에 앞으로 자주 들락날락할 변수들을 이용해주기 위해 set -gx 명령어를 이용한 것이다.