Midnight Commander cấu hình tùy chọn vị trí khởi động dir


10

Nếu bạn chạy, mc -F bạn sẽ thấy có thư mục cấu hình [Dữ liệu hệ thống] và thư mục cấu hình [Dữ liệu người dùng]

[Dữ liệu hệ thống]

Config directory: /etc/mc/

[Dữ liệu người dùng]

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

Đầu tiên là toàn hệ thống, thứ hai là Người dùng cụ thể.

Cái thứ hai dường như phụ thuộc vào vị trí nhà của người dùng; nói cách khác, nó bị ràng buộc với nó. Điều đó có nghĩa là nếu bạn muốn (tạm thời) bắt đầu mc với một cấu hình thay thế như cùng một người dùng, bạn không thể thực hiện việc thay đổi (và exporting) biến HOME trước nó. Cách giải quyết 'Thay đổi-HOME-trước-bắt đầu' này, mặc dù có mẹo nhưng khó có thể chấp nhận được, vì nó cũng ... sửa đổi người dùng HOME.

Bạn có nghĩ rằng có một cách để

  1. Thay đổi động thư mục cấu hình người dùng trước khi mc khởi động (tùy chọn dòng lệnh sẽ là điều thích hợp nhất, nhưng dường như không có ở đó)

  2. Khôi phục HOME 'tự nhiên' cho người dùng ngay sau khi mc bắt đầu, nếu thay đổi HOME trước đó là cách duy nhất để thay đổi vị trí thư mục người dùng

Các trường hợp mc được cấu hình khác nhau không được can thiệp lẫn nhau nếu chạy đồng thời.

Câu trả lời:


11

Điều đó hóa ra đơn giản hơn người ta có thể nghĩ. Biến MC_HOME có thể được đặt thành đường dẫn thay thế trước khi bắt đầu mc. Trang man không phải là thứ bạn có thể tìm thấy câu trả lời ngay lập tức =)

Đây là cách nó hoạt động: - cách thông thường

[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/

và cách khác:

[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/

Trường hợp sử dụng tính năng này:

Bạn phải chia sẻ cùng tên người dùng trên máy chủ từ xa (quyền truy cập có thể bị phân biệt bởi các phím rsa) và muốn sử dụng cấu hình mc yêu thích của bạn khi ghi đè lên nó. Các phiên đồng thời không can thiệp lẫn nhau.

Điều này hoạt động tốt như một phần của cách tiếp cận sshrc được mô tả trong https://github.com/Russell91/sshrc


Một nhược điểm nhỏ của giải pháp này: nếu bạn đặt MC_HOME thành một thư mục khác với HOME thông thường của bạn, mc sẽ bỏ qua nội dung của ~ / .bashrc thông thường của bạn, ví dụ, các bí danh tùy chỉnh được xác định trong tệp đó sẽ không hoạt động nữa. Giải pháp thay thế: thêm một liên kết tượng trưng vào ~ / .bashrc của bạn vào thư mục MC_HOME mới
Cri

1

Nếu bạn muốn nói, bạn muốn có thể chạy hai phiên bản mc là cùng một người dùng cùng một lúc với các thư mục cấu hình khác nhau, theo như tôi có thể nói với bạn là không thể. Con đường được mã hóa cứng.

Tuy nhiên, nếu bạn muốn nói, bạn muốn có thể chuyển đổi thư mục cấu hình nào đang được sử dụng, đây là một ý tưởng (đã thử nghiệm, hoạt động). Bạn có thể muốn làm điều đó mà không cần mc chạy:

  • Tạo một thư mục $HOME/mc_conf, với một thư mục con , one.
  • Di chuyển nội dung $HOME/.config/mcvào $HOME/mc_conf/onethư mục con
  • Nhân đôi onethư mục như $HOME/mc_conf/two.
  • Tạo một tập lệnh , $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  
    
  • Chạy cái này , switch_mc one. rmsẽ sủa về không có tập tin như vậy, điều đó không quan trọng.

Hy vọng rằng nó rõ ràng những gì đang xảy ra ở đó - điều này đặt đường dẫn thư mục cấu hình là một liên kết tượng trưng. Bất cứ thay đổi cấu hình nào bạn thực hiện và lưu sẽ là int onethư mục. Sau đó, bạn có thể thoát và switch_mc twotrở lại cấu hình cũ, sau đó bắt đầu lại mc, thực hiện thay đổi và lưu chúng, v.v.

Bạn có thể thoát khỏi việc gỡ bỏ killall mcvà chơi xung quanh; các công cụ cấu hình có trong initệp, được đọc khi khởi động (vì vậy bạn không thể chuyển đổi theo cách này). Sau đó, nó không được chạm cho đến khi thoát trừ khi bạn "Lưu thiết lập", nhưng khi thoát nó có thể bị ghi đè, vì vậy điều nguy hiểm ở đây là bạn xóa một cái gì đó bạn đã làm trước đó hoặc bên ngoài ví dụ đang chạy.


Điều đó thực sự hiệu quả, ý tưởng của bạn khá rõ ràng, cảm ơn bạn đã dành thời gian. Tuy nhiên, ý tưởng của tôi là có thể chạy các mc được cấu hình khác nhau trong cùng một tài khoản không can thiệp lẫn nhau. Tôi nên đã xác định rằng trong câu hỏi của tôi. Đường dẫn đến cấu hình dir trên thực tế đã được mã hóa cứng, nhưng nó được mã hóa tương đối với thư mục nhà của người dùng, đó là giá trị của $ HOME, do đó thay đổi nó khi bắt đầu thay đổi vị trí dir cấu hình - Tôi đã kiểm tra điều đó. nhược điểm là $ HOME vẫn thay đổi miễn là mc chạy, điều này có thể được giải quyết nếu mc có một loại móc khởi động để đưa khôi phục lại HOME ban đầu vào
Tagwint

Tôi đã mở rộng q ban đầu của mình với điều kiện 'cùng thời gian' - nó không phù hợp với giới hạn kích thước nhận xét trước của tôi
Tagwint
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.