Previous: , Up: Variables   [Contents][Index]


49.2.6 接続ごとのローカル変数

ほとんどの変数はローカルマシンの状況を反映します。リモートのデフォルトディレクトリーをもつバッファー操作時には、それらの変数が異なる値を使用しなければならないときが時折あります。shellの呼び出し時に適用するシェルについて考えてみてください。ローカルマシンでは/bin/bashでリモートマシンでは/bin/kshかもしれません。

これは接続ローカル変数(connection-local variables)で実現することができます。ディレクトリーローカル変数とファイルローカル変数は接続ローカル変数をオーバーライドします。安全ではない接続ローカル値は、安全でないファイルローカル値と同じ方法で扱われます(Safe File Variablesを参照してください)。

接続ローカル変数はconnection-local-set-profile-variables関数を使用して変数/値ペアのグループとしてプロファイル(profile)内に宣言されます。関数connection-local-set-profilesはリモートマシンを識別する与えられた条件にたいしてプロファイルをアクティブにします。

(connection-local-set-profile-variables 'remote-ksh
   '((shell-file-name . "/bin/ksh")
     (shell-command-switch . "-c")))

(connection-local-set-profile-variables 'remote-bash
   '((shell-file-name . "/bin/bash")
     (shell-command-switch . "-c")))

(connection-local-set-profiles
   '(:application tramp :machine "remotemachine") 'remote-ksh)

このコードはremote-kshremote-bashという2つの異なるプロファイルを宣言しています。プロファイルremote-kshはホスト名としてregexpの"remotemachine"にマッチするリモートデフォルトディレクトリーをもつすべてのバッファーに適用されます。このような条件はプロパティ:protocol (Trampの手法)や:user (リモートユーザー名)も区別できます。nilという条件はリモートデフォルトディレクトリーをもつすべてのバッファーにマッチします。