Midnight Commander mengkonfigurasi opsi startup lokasi


10

Jika Anda menjalankan mc -F Anda akan melihat ada direktori config [Data sistem] dan direktori config [Data pengguna]

[Data sistem]

Config directory: /etc/mc/

[Data pengguna]

Config directory: /home/<username>/.config/mc/

Pertama adalah seluruh sistem, yang kedua adalah khusus pengguna.

Yang kedua tampaknya tergantung pada lokasi rumah pengguna; dengan kata lain, itu terikat padanya. Itu berarti jika Anda ingin (sementara) mulai mc dengan konfigurasi alternatif sebagai pengguna yang sama Anda tidak dapat melakukannya tanpa mengubah (dan exporting) variabel HOME sebelum itu. Ini solusi 'Mengubah-HOME-sebelum-untuk memulai', meskipun melakukan trik, hampir tidak dapat diterima, karena juga ... tidak memodifikasi HOME pengguna.

Apakah Anda pikir ada cara untuk melakukannya?

  1. Ubah dir konfigurasi pengguna secara dinamis sebelum mc dimulai (opsi baris perintah akan menjadi hal yang paling tepat, tetapi tampaknya tidak ada di sana)

  2. Pulihkan HOME 'alami' untuk pengguna setelah mc dimulai, jika mengubah HOME sebelumnya adalah satu-satunya cara untuk mengubah lokasi dir pengguna

instance mc yang dikonfigurasi secara berbeda tidak boleh saling mengganggu jika berjalan secara bersamaan.

Jawaban:


11

Itu ternyata lebih sederhana dari yang diperkirakan. Variabel MC_HOME dapat diatur ke jalur alternatif sebelum memulai mc. Halaman manual bukanlah sesuatu yang bisa Anda temukan jawabannya segera =)

Begini cara kerjanya: - cara biasa

[jsmith@wstation5 ~]$ mc -F
Root directory: /home/jsmith

[System data]
<skipped>

[User data]
    Config directory: /home/jsmith/.config/mc/
    Data directory:   /home/jsmith/.local/share/mc/
        skins:          /home/jsmith/.local/share/mc/skins/
        extfs.d:        /home/jsmith/.local/share/mc/extfs.d/
        fish:           /home/jsmith/.local/share/mc/fish/
        mcedit macros:  /home/jsmith/.local/share/mc/mc.macros
        mcedit external macros: /home/jsmith/.local/share/mc/mcedit/macros.d/macro.*
    Cache directory:  /home/jsmith/.cache/mc/

dan cara alternatif:

[jsmith@wstation5 ~]$ MC_HOME=/tmp/MCHOME mc -F
Root directory: /tmp/MCHOME

[System data]
<skipped>    

[User data]
    Config directory: /tmp/MCHOME/.config/mc/
    Data directory:   /tmp/MCHOME/.local/share/mc/
        skins:          /tmp/MCHOME/.local/share/mc/skins/
        extfs.d:        /tmp/MCHOME/.local/share/mc/extfs.d/
        fish:           /tmp/MCHOME/.local/share/mc/fish/
        mcedit macros:  /tmp/MCHOME/.local/share/mc/mc.macros
        mcedit external macros: /tmp/MCHOME/.local/share/mc/mcedit/macros.d/macro.*
    Cache directory:  /tmp/MCHOME/.cache/mc/

Gunakan case dari fitur ini:

Anda harus membagikan nama pengguna yang sama di server jarak jauh (akses dapat dibedakan dengan kunci rsa) dan ingin menggunakan konfigurasi mc favorit Anda tanpa ditimpa. Sesi serentak tidak saling mengganggu.

Ini bekerja dengan baik sebagai bagian dari pendekatan sshrc yang dijelaskan dalam https://github.com/Russell91/sshrc


Kelemahan kecil dari solusi ini: jika Anda menetapkan MC_HOME ke direktori yang berbeda dari HOME Anda yang biasa, mc akan mengabaikan konten ~ ~. Penanganan masalah: tambahkan symlink ke ~ / .bashrc Anda ke direktori MC_HOME baru
Cri

1

Jika maksud Anda, Anda ingin dapat menjalankan dua instance mc sebagai pengguna yang sama pada saat yang sama dengan direktori konfigurasi yang berbeda, sejauh yang saya tahu Anda tidak bisa. Jalannya adalah hardcoded.

Namun, jika maksud Anda, Anda ingin dapat beralih direktori config mana yang sedang digunakan, inilah ide (diuji, berfungsi). Anda mungkin ingin melakukannya tanpa menjalankan mc:

  • Buat direktori $HOME/mc_conf, dengan subdirektori one,.
  • Pindahkan konten $HOME/.config/mcke dalam $HOME/mc_conf/onesubdirektori
  • Gandakan onedirektori sebagai $HOME/mc_conf/two.
  • Membuat script, $HOME/bin/switch_mc:

    #!/bin/bash
    
    configBase=$HOME/mc_conf
    linkPath=$HOME/.config/mc
    
    if [ -z $1 ] || [ ! -e "$configBase/$1" ]; then
        echo "Valid subdirecory name required."
        exit 1
    fi
    
    killall mc
    rm $linkPath
    ln -sv $configBase/$1 $linkPath  
    
  • Jalankan ini switch_mc one,. rmakan menggonggong tentang tidak ada file seperti itu, itu tidak masalah.

Semoga jelas apa yang terjadi di sana - ini menetapkan path direktori config sebagai symlink. Perubahan konfigurasi apa pun yang Anda buat dan simpan sekarang akan berada di onedirektori. Anda kemudian dapat keluar dan switch_mc two, kembali ke konfigurasi lama, lalu mulai mc lagi, buat perubahan dan simpan, dll.

Anda bisa lolos dengan melepas killall mcdan bermain-main; hal-hal konfigurasi ada dalam inifile, yang dibaca saat start-up (jadi Anda tidak dapat mengaktifkannya dengan cepat). Itu kemudian tidak tersentuh sampai keluar kecuali Anda "Simpan pengaturan", tetapi pada keluar itu mungkin ditimpa, jadi bahayanya di sini adalah bahwa Anda menghapus sesuatu yang Anda lakukan sebelumnya atau di luar instance berjalan.


yang berhasil memang, ide Anda cukup jelas, terima kasih atas waktu Anda. Namun ide saya adalah untuk dapat menjalankan mc yang dikonfigurasi secara berbeda di bawah akun yang sama dan tidak saling mengganggu. Saya seharusnya menjelaskannya dalam pertanyaan saya. jalan ke config dir sebenarnya adalah hardcoded, tetapi itu hardcod TERKAIT dengan dir home user, yaitu nilai $ HOME, sehingga mengubahnya jadi mulai mc mulai TIDAK mengubah lokasi config dir - Saya sudah memeriksanya. kekurangannya adalah $ HOME tetap berubah selama mc berjalan, yang bisa diatasi jika mc memiliki semacam pengait startup untuk mengembalikan ke HOME asli ke dalam
Tagwint

Saya telah memperpanjang q asli saya dengan kondisi 'waktu yang sama' - tidak sesuai dengan batasan ukuran komentar sebelumnya
Tagwint
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.