GNU/Linux >> Linux の 問題 >  >> Linux

gnome-terminal:新しいタブを開くときに作業ディレクトリのシンボリックリンクを保持する方法は?

このバグは、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 ほどきれいに動作しないことは確かです のアプローチ。特に、一度に多数のタブを実行していて、すべてバックグラウンド タスクを実行している場合、新しいタブを開いたときに「間違った」ディレクトリに移動する可能性が非常に高くなります。


Linux
  1. BashスクリプトをBashにパイプするときにパラメータを設定する方法は?

  2. Bashシェルスクリプトで改行をエコーする方法

  3. 親プロセスの作業ディレクトリを設定するにはどうすればよいですか?

  1. bashでファイルの絶対ディレクトリを取得するにはどうすればよいですか?

  2. bashでインストールを使用してディレクトリをディレクトリにコピーする方法は?

  3. bash スクリプトを実行するには?

  1. Tmuxの現在のディレクトリに新しいウィンドウを作成するにはどうすればよいですか?

  2. Unixは、ファイルシステムをナビゲートするときに、ユーザーの作業ディレクトリをどのように追跡しますか?

  3. ディレクトリの下のすべてのシンボリックリンクを解除するには?