2015年5月9日土曜日

MacOS Xのターミナル.appでmoshを使う(日本語環境の場合)

moshをFreeBSDとMacOS Xでインストールした話の続きです。
FreeBSDとMacOS Xでmoshを使う
http://www.sakashita-net.jp/2015/05/freebsdmacos-xmosh.html
上記の設定で、MacOS Xのターミナルで開いたコマンド行からは使えるようになりました。次は、ターミナルのプロファイルに登録して使うようにしてみます。
ターミナル.appの設定を開き、プロファイルを追加します。この中の[シェル]タブの起動欄で
  • コマンドを実行にチェックを入れる
  • 入力欄には「mosh ユーザー名@ホスト名」
と設定し、さらに[詳細] タブの言語環境で
  • 文字エンコーディング: Unicode(UTF-8)
  • 起動時にロケール環境変数を設定にチェック
  • Unicode東アジアA(曖昧)の文字幅をW(広)にするにチェック
として、このプロファイルで起動してみます。すると
[コマンドが見つかりません:mosh]
[新しいプロセスを作成して擬似 tty を開くことができませんでした。]
となってしまいます。 その下の「シェル内で実行」をチェックしてから起動すると、今度はうまくいきます。しかし「シェル内で実行」の場合、リモートのホストからログアウトすると、手元のMacのシェルに戻ってしまいます。できれば、sshのようにターミナル.appのウィンドウが閉じられて欲しいところです。入力欄で
mosh ユーザー名@ホスト名 && exit
として回避することはできますが、ややいまいちです。

コマンドが見つかりません:mosh」と出ているので、ターミナル.appが内部で保持するPATH環境変数にmoshがインストールされているディレクトリ /usr/local/bin が含まれていないのかもしれません。そこで、起動するコマンドを
/usr/local/bin/mosh ユーザー名@ホスト名
とし、「シェル内で実行」の チェックを外してから起動してみると、今度はうまくいきます。

sshのポート番号を変えている場合は
/usr/local/bin/mosh --ssh="ssh -p 2222"
としたいところですが、
/usr/local/bin/mosh: Server-side port or range (10022") is not valid.
となりうまくいきません([シェル]タブで、「シェル終了時:ウィンドウを閉じない」と設定しておくとエラーメッセージを見ることができます。)。
内部でうまくコマンド行をパースできていないのかもしれません。なのでsshに対するオプションはMacOS X側の~ユーザ/.ssh/configファイルで
Host ホスト名
    Port    2222
などと設定する必要があります。

p.s. 上記の記述は、システム環境設定/言語と地域/優先する言語で「日本語」を最優先としている場合です。ここで「English」を最優先にしている場合には、以下の設定が必要です。
  • ターミナル.appの設定で「起動時にロケール環境変数を設定」のチェックを外す
  • /etc/launchd.confを作成し、以下のように記述する
    setenv LANG en_US.UTF-8
以下を参考にしてください。