Paepoi

Paepoi » macOS Tips » macOS を Linux のように使う

macOS を Linux のように使う

# 最終更新日 2021.01.01

zprofile と zshrc
zsh をカスタムするファイルは ~/.zprofile と ~/.zshrc を作成。
~/.zprofile はログインで読み込みされる、~/.zshrc は端末起動時に読み込みされる。
ちなみに Python3 をインストールすると ~/.zprofile を自動作成、又は追記されます。

プロンプトのカスタムやエイリアス作成だけなら ~/.zshrc のみでいい。
下記は筆者がやっている内容です、説明は省きます。
# ~/.zshrc @ User specific environment

PATH="$HOME/bin:$PATH"
export PATH

# Fedora like Prompt
PS1="[%n@%m %1~]%# "
#RPROMPT="[%~]"

# alias
alias ll="ls -l"
alias jxa="osascript -i -l JavaScript"
# 場所が変わった
#alias jsc=/System/Library/Frameworks/JavaScriptCore.framework/Versions/A/Resources/jsc
alias jsc=/System/Library/Frameworks/JavaScriptCore.framework/Versions/A/Helpers/jsc

/bin/sh
macOS で /bin/sh 指定すると bash の sh 互換モードで動作します。
一方 ssh で macOS にログインすると普通に zsh で動作します。
非常にややこしいので macOS でシェルを使う場合は /bin/sh は指定しないほうがいい。
必ず zsh|bash は決め打ちするのが懸命。

$HOME/bin
PATH="$HOME/bin:$PATH"
を指定しましたけど macOS デフォルトにはそんなディレクトリはありません。
自分で作成してください、Fedora に合わせているだけなので別名でもいいです。
指定したディレクトリは $PATH が通るので ls 等と同様にコマンド名だけで使える。

このディレクトリによく書き換えて使う使い捨てスクリプトを入れておく。
使い捨てスクリプトは拡張子一括変更や連番ファイルのダウンロード等々。
一行書き換えすれば使い回せるので手の届きやすい ~/bin に置いておくと便利。

ゲートキーパーが厳しくなった現状の macOS では実行ファイルは置けません。

実行スクリプト
macOS も実行パーミッションを付ければシバンによるスクリプト実行が可能。

Finder から command+O で使うには更に拡張子を外す必要がある。
ただこの場合カレントディレクトリは $HOME に指定されてしまう。
なので以下のようにしてカレントディレクトリを移動してから使う必要がある。

sh の場合
#!/bin/zsh
cd `dirname "$0"`
# 以下普通にスクリプトを書く
Python3 の場合
#/usr/bin/env python3

import sys, os

os.chdir(os.path.dirname(sys.argv[0]))
# 以下同文
Terminal.app が無意味に立ち上がるのを無視すれば Linux 同様に使える。

Python 3
macOS はゲートキーパーが年々厳しくなり野良アプリはほぼ起動できません。
これが気に入らない人は素直に Fedora 等の Linux に移りましょう、とても自由です。
いや、Python3 くらいは使いたくなると思うので。

Python3 は command-line-tools に同梱されていますがバージョンが古い。
公式サイトのインストーラで入れたものなら問題なく起動できます。
Welcome to Python.org

macOS 64-bit universal2 installer を選べば M1 ネイティブの Python で起動できる。
ただし 2021.01.01 現在は pip の手動アップグレードが必要。
# pip アップグレード
pip3 install --upgrade pip
# POyObjC 等は上記をやらないと動かない
pip3 install -U pyobjc

Node.js についても今まで書いていましたが、ヤメときます。
筆者は JXA との違い確認以外で一度も使ったことが無いことに気が付いたので。
入れている人多いけど何に使っているんだろう?

拡張子
macOS ではコマンドでは UNIX ですが GUI は拡張子に左右されます。
スクリプトでコマンドを自作した場合実行パーミッションだけではアイコンは変わらない。
拡張子を取っ払うとコマンドのアイコンになります。
Linux はそんなアイコンありませんけどね。
cp test.sh test
chmod +x test
img/cmd.png

Copyright(C) sasakima-nao All rights reserved 2002 --- 2024.