GNU/Linux >> Belajar Linux >  >> Linux

gnome-terminal:bagaimana cara mempertahankan symlink dari direktori kerja saat membuka tab baru?

Bug ini dilacak di Ubuntu Launchpad dan GNOME Bugzilla.

Karena ini terutama mengganggu saya dengan hanya beberapa direktori, saya menggunakan solusi yang lebih sederhana berikut ini.

Misalkan Anda memiliki /home/username/work sebagai symlink ke /long/path/named/asdf . Jadi Anda melakukan cd ~/work di terminal gnome, buka tab baru, dan temukan terminal yang melaporkan jalur lengkap. Untuk memperbaikinya, cukup masukkan kode berikut di .bashrc Anda :

cd ${PWD/\/long\/path\/named\/asdf/$HOME\/work}

Ketika gnome-terminal memulai shell baru, ia mendapatkan direktori saat ini dengan $PWD, dan jika berisi /long/path/named/asdf , itu menggantikan string itu dengan $HOME/work , dan cd s ke string yang dihasilkan. Jika $PWD tidak berisi string, itu setara dengan cd $PWD , yang tidak melakukan apa-apa.


Saya menduga tidak ada jawaban yang benar-benar bagus untuk ini. gnome-terminal menemukan bash direktori kerja saat ini dengan memeriksa /proc/<pid>/cwd , yang symlinknya diperluas (mungkin karena alasan keamanan, jika tidak ada yang lain). Saya tidak tahu cara lain untuk satu proses menemukan direktori kerja proses lain.

Sebagai solusinya, ada beberapa trik bash yang dapat Anda coba, tetapi lihat PERINGATAN di bawah! Di .bashrc:

...
PROMPT_COMMAND='pwd >~/.bashlocal_saved_dir'
...

[ -n "$PS1" -a -f ~/.bashlocal_saved_dir ] && cd `cat ~/.bashlocal_saved_dir`
# end of .bashrc

Ini akan melakukan dua hal. Pertama, setiap kali bash menampilkan prompt, pertama-tama bash akan menulis direktori kerjanya saat ini ke dalam file .bashlocal_saved_dir di direktori home Anda. Kedua, ketika bash dimulai secara interaktif (berlawanan dengan menjalankan skrip), bash akan berubah ke direktori yang disimpan dalam file yang sama. Ini berarti bahwa ketika Anda memulai bash interaktif baru, itu akan dimulai di dir yang sama dengan bash yang terakhir menampilkan promptnya. Perhatikan bahwa Anda dapat menekan Enter untuk menyebabkan bash menampilkan ulang promptnya, sehingga menjadikannya yang terakhir. :)

PERINGATAN :Ini adalah retasan, dan saya hanya mencobanya sampai saya tahu itu berhasil. Pikirkan permen karet dan tali sepatu. Ini mungkin memiliki efek yang mengejutkan, dan tentunya tidak akan berfungsi sebersih gnome-terminal pendekatan. Secara khusus, jika Anda menjalankan banyak tab sekaligus, semuanya melakukan tugas latar belakang, Anda mungkin berakhir di direktori yang "salah" saat membuka tab baru.


Linux
  1. Bagaimana Cara Membuat Jendela Baru Di Direktori Saat Ini Di Tmux?

  2. Bagaimana Unix Melacak Direktori Kerja Pengguna Saat Menavigasi Sistem File?

  3. Bagaimana Cara Membuat Terminal Autocomplete Saat Ada Beberapa File/direktori?

  1. Cara menggemakan Baris Baru di Bash Shell Script

  2. Cara Membuat Direktori Baru di Linux

  3. Bagaimana skrip bash dapat mengetahui direktori tempat ia diinstal ketika bersumber dari . operator?

  1. Bagaimana cara menjalankan skrip bash?

  2. Bagaimana meminimalkan pengetikan saat sering berpindah direktori?

  3. Bagaimana cara membuka terminal baru di direktori saat ini?