1

セカンダリ ドライブからシンボリック リンクされたホーム ディレクトリがあります。これには、ホーム ディレクトリ内でターミナルを開くと、シンボリック リンクが解決されることがあるという不幸な影響があります。したがって、私のプロンプト~/somedir//Volumes/hdd/home/myuser/somedir/

ZSHで次chpwd_functionsのように使用して、これを回避しようとしました:

function fix_home_path() {
  cd $HOME${PWD##$(cd $HOME; pwd -P)}
}
chpwd_functions=(${chpwd_functions[@]} "fix_home_path")

明らかに、再帰ループが発生するため機能しません。

正しい解決策は何ですか?

4

1 に答える 1

0

機能する2つのソリューション。また

  1. 自宅の(公式の)場所を に変更します/Volumes/hdd/home/myuser/somedir/。少なくとも Linux では、内部/etc/passwdまたはそのような場所で変更が発生しますが、OSX についてはわかりません。これにより、正常に動作するアプリケーションは、Zsh を含む正しいディレクトリをホームとして使用するようになります。
  2. $HOMEシェルでのみの値を変更することもできます。~/.zshenvインクルード時

    export HOME=/Volumes/hdd/home/myuser/somedir/

Zsh は、プロンプトの展開を正しく処理します。

PS: プロンプトに凝った/奇妙な拡張を入れたい場合は、関数を定義して、その戻り値をプロンプトに含めることができます。例、プロンプトに日付を含める複雑な方法:

zsh -f # new zsh with default configuration values.
setopt PROMPT_SUBST
function myfunc() { date }
export PROMPT=' \"$(myfunc)\" %~ ' # single quotes, NOT double quotes!

myfuncこれにより、プロンプト表示ごとに関数が呼び出されます。

于 2014-02-04T10:12:39.773 に答える