このバグは、Ubuntu Launchpad と GNOME Bugzilla で追跡されています。
これは主にいくつかのディレクトリだけで私を悩ませているので、次のより簡単な回避策を使用します。
/home/username/work
があるとします /long/path/named/asdf
へのシンボリックリンクとして .だからあなたは cd ~/work
をします gnome-terminal で新しいタブを開き、フル パスを報告しているターミナルを見つけます。これを修正するには、次を .bashrc
に追加します :
cd ${PWD/\/long\/path\/named\/asdf/$HOME\/work}
gnome-terminal が新しいシェルを起動すると、現在のディレクトリが $PWD で取得され、/long/path/named/asdf
が含まれている場合 、その文字列を $HOME/work
に置き換えます 、および cd
s を結果の文字列に変換します。 $PWD に文字列が含まれていない場合は、cd $PWD
と同等です。 、何もしません。
これに対する本当に良い答えはないと思います。 gnome-terminal
bash
を見つけます /proc/<pid>/cwd
を調べることによる の現在の作業ディレクトリ 、シンボリックリンクが展開されています(おそらくセキュリティ上の理由から)。あるプロセスが別のプロセスの作業ディレクトリを見つける別の方法を知りません.
回避策として、試すことができる bash のトリックがいくつかありますが、警告を参照してください。 下! .bashrc:
...
PROMPT_COMMAND='pwd >~/.bashlocal_saved_dir'
...
[ -n "$PS1" -a -f ~/.bashlocal_saved_dir ] && cd `cat ~/.bashlocal_saved_dir`
# end of .bashrc
これにより、2 つのことが行われます。まず、bash がプロンプトを表示するたびに、まず現在の作業ディレクトリをファイル .bashlocal_saved_dir
に書き込みます。 あなたのホームディレクトリに。次に、(スクリプトを実行するのではなく) bash が対話的に開始されると、同じファイルに格納されているディレクトリに変更されます。これは、新しい対話型 bash を開始すると、最後にプロンプトを表示した bash と同じディレクトリで開始されることを意味します。 Enter キーを押すと、bash にプロンプトが再表示され、最後になります。 :)
警告 :これはハックです。動作することがわかっているところまで試しただけです。風船ガムと靴ひもを考えてみてください。驚くべき効果があり、gnome-terminal
ほどきれいに動作しないことは確かです のアプローチ。特に、一度に多数のタブを実行していて、すべてバックグラウンド タスクを実行している場合、新しいタブを開いたときに「間違った」ディレクトリに移動する可能性が非常に高くなります。