Fish Shell zamiast bash dla macOS

24/05/2017, 17:14 · · · 9

Od kilku dni wykonywałem syzyfową pracę za pomocą programu ImageOptim i Findera. Wiedziałem, że muszę to sobie zautomatyzować, ale nie miałem na to czasu, więc w wolnych chwilach brałem kilkaset plików, wrzucałem do ImageOptim i czekałem aż się skompresują. Dzisiaj w końcu sobie to zautomatyzowałem pisząc skrypt, który wszystko zrobi za mnie, ale żeby nie było za łatwo, to postanowiłem podmienić sobie basha na fish.

Dlaczego fish? Bo naukę basha zacząłem prawdopodobnie 23 lata temu i nigdy za nim nie przepadałem. Poza tym nie wykorzystywałem go do pisania skryptów od przynajmniej 15 lat, więc i tak musiałbym przypomnieć sobie składnię. Stwierdziłem więc, że przejdę na nowocześniejszego fisha, przy okazji zaczynając naukę „od nowa”.

Bash jest domyślnym shellem pod macOS, a fisha trzeba doinstalować. Można to zrobić na kilka sposobów – za pomocą Homebrew, MacPorts lub ręcznie. Brew miałem już na komputerze z innych powodów, więc skorzystałem z tej metody. Wszystkie są opisane tutaj.

Najpierw instalacja Homebrew

Jeśli nie macie Homebrew, to należy go zainstalować następującą komendą, wpisywaną w Terminalu:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Jeśli już macie, to uruchomcie Terminal i upewnijcie się, że wszystko gra…

brew doctor

A potem…

brew update

Instalujemy Fish

Jeśli już macie Homebrew, to czas na instalację fisha… W Terminalu wpisujemy…

brew install fish

Po jego zainstalowaniu, które może chwilę zająć, trzeba będzie jeszcze zmienić basha z domyślnego shella na fisha. Pierwszym krokiem będzie edycja pliku /etc/shells, aby dodać do niego fisha. Ja w tym celu używam BBEdit, ale każdy edytor tekstu powinien się nadawać. Do edycji tego pliku będzie potrzebne hasła administratora. Domyślnie wygląda on tak:

# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.

/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh

Na dole trzeba dodać jedną linię tekstu…

# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.

/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh
/usr/local/bin/fish

… aby system wiedział o istnieniu fisha. Teraz pozostaje już tylko zmienić basha na fisha następującą komendą.

chsh -s /usr/local/bin/fish

Jeśli teraz zamkniecie okno Terminala i otworzycie nowe, to uruchomi się już fish, a nie bash.

W następnej części opiszę swój fish-owy skrypt…

fish shell



9

Wojtek Pietrusiewicz

Wydawca, fotograf, podróżnik, podcaster – niekoniecznie w tej kolejności. Lubię espresso, mechaniczne zegarki, mechaniczne klawiatury i zwinne samochody.