open terminal at folder mac|開いた先が本当にそのフォルダか確かめる

open terminal at folder mac で調べる人が知りたいのは、たいてい開き方そのものではありません。開く手順は数分で見つかります。そのあとに残るのが、開いたターミナルが本当にそのフォルダに居るのかという問題です。見た目では区別が付かず、間違っていても何のエラーも出ないまま、最初のコマンドが別の場所に当たります。この記事は、開いたあとの確かめ方と、ずれが起きる原因の切り分けを扱います。

「フォルダで開く」とは、作業ディレクトリを渡すこと

ターミナルの窓には、作業ディレクトリという1つの性質があります。そのあとに打つ相対パスは、すべてここを起点に解決されます。./exports と書いたときにどのフォルダを指すかは、窓が開いた場所によって変わります。

DockやSpotlightからターミナルを起動すると、作業ディレクトリはホームになります。ログインシェルがそこから始まるためで、そのとき前面にあったFinderの窓とは何の関係もありません。フォルダを指定して開くという操作は、この起点を差し替えることを意味します。差し替えが成功していれば、最初のコマンドがもう正しい場所に当たります。

ここで注意したいのは、失敗が静かだという点です。ホームで開いた窓と、案件のフォルダで開いた窓は、画面上まったく同じに見えます。違いが表に出るのは、コマンドが実行されたあとです。作業ディレクトリの間違いは、打ち損じではなく、正しく実行された処理が別の場所に当たることなので、取り消しの効かない操作ほど損害が大きくなります。

開いた直後に1行だけ打って確かめる

確かめる方法は1つで、開いた窓で pwd と打つだけです。シェルが自分の現在地だと思っている場所が表示されます。所要は1秒ですが、これを習慣にしているかどうかで事故の数が変わります。

もう1つ、パスを目で確かめるだけなら、ドラッグで文字にする方法があります。

「ターミナル」ウインドウにファイルまたはフォルダをドラッグします。項目の絶対パスがコマンドラインに表示されます。 出典: support.apple.com

確認を毎回打つのが面倒なら、プロンプトに現在地を出しておく手もあります。標準の設定では、プロンプトの左側にいまのフォルダ名が表示されます。ただし表示されるのは末尾の1階層だけなので、同じ名前のフォルダが案件ごとに複数ある環境では、これだけでは判断が付きません。深い階層まで出したい場合はプロンプトの書式を変えることになり、そこまでやるかどうかは扱っているフォルダ構成によります。

コマンドを実行せずに文字だけを見て、想定と合っているかを確かめてから改行を打てば、実行前に気づけます。pwd が「開いたあとの確認」なのに対し、こちらは「打つ前の確認」で、役割が違います。両方を場面で使い分けると、目視の回数を増やさずに精度が上がります。

表示と実体がずれる3つの原因

pwd の結果がFinderの表示と食い違うとき、原因はおおむね次の3つに分かれます。どれも似た症状に見えますが、仕組みが別なので対処も別です。

1つ目はシンボリックリンクです。macOSのディレクトリには、実体が別の場所にあるものが混じっています。たとえば /tmp に居るとき pwd/tmp と返しますが、pwd -P と打つと /private/tmp と返ります。/tmpprivate/tmp へのリンクだからです。パスを文字として比較するスクリプトは、この2つを別の場所だと判断します。

2つ目はFinderのエイリアスです。エイリアスは見た目こそリンクに似ていますが、シンボリックリンクとは別の仕組みで作られています。エイリアスをターミナルにドラッグすると、渡されるのはエイリアスというファイル自身のパスであって、その先のフォルダのパスではありません。ドラッグしたのに知らない場所が入力される、という症状のほとんどはこれです。

この2つは、コマンドで見分けられます。ターミナルで ls -l と打つと、シンボリックリンクの行には矢印が付いて実体の場所まで表示されます。エイリアスにはこの矢印が出ず、サイズを持った普通のファイルとして並びます。Finder上ではどちらも同じような小さな矢印付きのアイコンに見えるので、迷ったらこの1行で判別するのが確実です。

3つ目はボリュームの名前です。外付けディスクやネットワークの共有は /Volumes の下に現れ、その途中の名前はマウントしたときのボリューム名です。同じ名前のディスクをもう1台つなぐと、macOSは末尾に番号を足して別の名前にします。先週メモしたパスが、今日は別のディスクを指していることがあり得ます。

どのターミナルが答えるかは、項目名で分かる

Finderのサービスメニューに並ぶ項目は、macOSが用意しているのではなく、アプリが自分で登録しています。したがって、項目の名前を見れば、どのアプリが応答するのかが分かります。

標準のターミナルが登録しているのは4件です。「フォルダに新規ターミナル」と「フォルダに新規ターミナルタブ」の2件に加えて、manページを開く項目と検索する項目が入っています。同じメニューにマニュアル関係の項目が混じって見えるのは、この4件が同じアプリから出ているからです。

別のターミナルアプリを入れている場合、その分の項目が追加で並びます。たとえばiTerm2は、タブで開く項目とウインドウで開く項目の2件を自分で登録します。表示名は英語のままなので、日本語の項目名の中に英語の項目が混ざっていたら、それが別アプリのものです。重要なのは、標準の項目が置き換わるのではなく、両方が並ぶという点です。どちらを押したかで、起動するアプリも、読み込まれる配色や設定も変わります。

なお、この一覧は選択しているものの種類によって出方が変わります。フォルダを選んでいるときと、ファイルを選んでいるときと、フォルダの中で何も選んでいないときで、並ぶ項目が入れ替わります。目的の項目が見当たらないときは、設定で無効になっているのか、いま選んでいるものが対象外なのかを先に切り分けてください。

項目の表示と非表示、およびキーの割り当ては、システム設定のキーボードからキーボードショートカットを開き、サービスの中のファイルとフォルダの欄で行います。使わないアプリの項目を外しておくと、押し間違いがなくなります。

パスは合っているのに、許可されていないと返るとき

pwd の結果が正しいのに、そのフォルダの一覧が出せない、あるいは操作が拒否される場合があります。パスの問題ではなく、許可の問題です。

デスクトップ、書類、ダウンロードの3つのフォルダは、macOSのプライバシー保護の対象になっています。許可はアカウント単位ではなくアプリ単位で与えられるため、長く使っているターミナルでは普通に読めるのに、先週入れたばかりの別のターミナルでは同じパスに対して operation not permitted と返る、という食い違いが起きます。

切り分け方は簡単です。同じパスに対して、ホームの直下にある保護されていないフォルダなら読めるのに、デスクトップや書類だと拒否される、という形になっていれば許可の問題です。パスそのものが間違っているときは、拒否ではなく「そのようなファイルやディレクトリはありません」という別の返り方になります。この2つの文言を区別できると、設定画面を開くべきか、パスを見直すべきかが即座に決まります。

設定はシステム設定のプライバシーとセキュリティにあり、「ファイルとフォルダ」の欄と「フルディスクアクセス」の欄の2か所に分かれています。ターミナルアプリを乗り換えたときは、この許可も新しいアプリに対して与え直す必要があります。同じ端末を複数人で使う場合や、支給された端末を設定する場合は、この作業を人が画面の前でやる必要がある点も押さえておくと、段取りが崩れません。

開いた窓が読む設定ファイルを取り違えていないか

無事に正しい場所で開いたのに、いつも使っているコマンドが見つからない、という詰まり方もあります。これは作業ディレクトリではなくシェルの側の話です。

macOS 10.15以降、新しく作られたアカウントの標準のログインシェルはzshです。それ以前から使い続けている環境ではbashのままのこともあり、その場合に読み込まれる設定ファイルが違います。bash向けの設定ファイルを編集しているのにzshで開いている、あるいはその逆になっているというのが、この症状のほぼすべてです。

いま何が動いているかは echo $SHELL で分かります。設定を書き足すファイルは、zshならホームの .zshrc.zprofile です。もう1つ、設定ファイルの中で cd を実行していると、フォルダを指定して開いた直後に別の場所へ移動してしまいます。フォルダで開いたのに毎回ホームに居る、という場合はここを疑います。

cdした瞬間に、Finderの表示と食い違い始める

ここまでの内容は、最初の1回を正確にするための話です。裏を返すと、正確にできるのは最初の1回だけです。

シェルの中で一度 cd を打てば、作業ディレクトリはそこから動きます。Finderの窓は開いたときのまま止まっているので、その瞬間から2つの窓は別々の場所を指したまま、見た目は何も変わりません。コマンドが作ったファイルをFinderで確かめようとして、表示されているのは10分前のフォルダだった、という状況はここから生まれます。

やっかいなのは、ずれていること自体には何の合図も出ない点です。ターミナルのプロンプトにフォルダ名を出す設定にしていれば片方は分かりますが、Finderの窓のほうは自分が古いことを知りません。窓を切り替えた瞬間に、目に入るのは正しそうに見える古い表示です。

追いつく方法は2つしかありません。Finderの側を手で移動させるか、ターミナルの側で一覧を出すかです。どちらも意識して選んでいる操作ではなく、ずれに気づいたときに反射的にやっている動作です。1日に何度これをしているかを数えてみると、開く手順の工夫では取り返せない量になっていることがあります。

窓を1つにするという判断に切り替える

往復が30回を超えているなら、変えるべきなのは開き方ではなく窓の構成です。フォルダの表示とコマンドの実行が同じ窓の中にあれば、現在地は1つしかなく、そもそもずれが発生しません。確認のために pwd を打つ手順も要らなくなります。

同じ窓の中で何ができるのかはできることに整理されています。Finderや二画面型のアプリと横に並べた違いは他のファイル管理との比較にあり、費用の判断は料金で確かめられます。長い処理を走らせて席を離れる場面での続きの見方はiPhone・iPadから続きをに、導入前に残る疑問はよくある質問にまとまっています。

手を動かす順序としては、まずサービスの項目にキーを割り当て、開いた直後に pwd を打つ習慣を1週間続けてみてください。それでずれが起きなくなるなら、いまの構成のままで問題ありません。ずれが減らず、原因が「窓が2つあること」に集中していたときだけ、道具そのものを見直す段階に入ります。

よくある質問

フォルダを指定して開いたのに、現在地がホームになっています。

シェルの設定ファイルの中で cd を実行していると、開いた直後に別の場所へ移動します。zshを使っているならホームの .zshrc.zprofile を確認してください。設定ファイルを編集したのに反映されない場合は、echo $SHELL で動いているシェルを確かめ、編集したファイルがそのシェル用かどうかを見直します。

pwd と pwd -P で違う結果が返るのはなぜですか?

途中にシンボリックリンクが含まれているためです。pwd はたどってきた見かけ上の道筋を返し、pwd -P はリンクを解決した実体の場所を返します。たとえば /tmp/private/tmp へのリンクなので、この2つの結果が食い違います。パスを文字として比べる処理では、どちらを使うかを決めておく必要があります。

サービスの項目を選んでも、使いたいターミナルではないアプリが開きます。

項目はアプリごとに登録されているので、標準のターミナル用の項目を押した可能性があります。別のターミナルを入れていれば、そのアプリ用の項目が同じメニューに並んでいます。表示名が英語のままの項目がそれに当たることが多いので、使わないほうの項目はシステム設定のサービスの一覧で非表示にしておくと迷いません。

パスは正しいのに operation not permitted と返ります。

デスクトップ、書類、ダウンロードはmacOSの保護対象で、許可はアプリごとに与えられます。システム設定のプライバシーとセキュリティを開き、「ファイルとフォルダ」と「フルディスクアクセス」の両方で、いま使っているターミナルアプリに許可が付いているかを確かめてください。アプリを乗り換えた直後に起きやすい症状です。

記事一覧へ戻る