Làm thế nào tôi có thể tạo một môi trường vỏ sạch để sử dụng tạm thời?


15

Tôi là người trả lời thường xuyên trên trang web Hỏi & Đáp phổ biến tập trung vào Unix và trong nhiều câu trả lời của tôi, tôi cung cấp các ví dụ sử dụng bashshell. Tuy nhiên, mỗi lần tôi làm điều này, tôi phải tự trải qua quá trình tạo môi trường sạch để đảm bảo rằng mọi bước đều được tính toán và ghi lại. Làm thế nào tôi có thể làm cho quá trình này đơn giản hơn? Tôi lý tưởng tìm cách gõ một lệnh duy nhất và có được một môi trường sạch sẽ, và xóa tất cả dấu vết của môi trường tạm thời đó sau khi tôi hoàn thành.


Câu trả lời:


10

Cá nhân tôi sử dụng bashchức năng sau để làm điều này:

so() {
    local tmpdir="$(mktemp -d)"
    local tmprc="$(mktemp)"
    cat > "$tmprc" << EOF
PS1='\\$ '
cd "$tmpdir"
EOF
    env - HOME="$HOME" TERM="$TERM" bash --rcfile "$tmprc"
    rm -rf "$tmpdir" "$tmprc"
}

Đây là những gì nó làm, theo thứ tự:

  • Tạo một thư mục tạm thời (để sử dụng làm thư mục làm việc của chúng tôi trong môi trường sạch);
  • Tạo một tệp tạm thời (để sử dụng làm bashtệp RC của chúng tôi );
  • Trong tệp RC, thêm các dòng:
    • Đặt PS1lời nhắc đến dấu kết thúc nhanh chóng theo sau là khoảng trắng, điều này giữ cho nó có liên quan trong trường hợp chúng tôi muốn có một bản sao đầu ra của chúng tôi trên trang web Hỏi & Đáp;
    • Thay đổi vào thư mục tạm thời chúng tôi tạo ra.
  • Gọi một thể hiện mới của bash, trong đó:
    • Ban đầu có một môi trường trống ngoại trừ $HOME$TERM( env - ...);
    • Đọc tệp RC của nó từ tệp tạm thời mà chúng ta đã tạo trước đó ( --rcfile).
  • Khi bash đã thoát, hãy xóa các tệp tạm thời mà chúng tôi đã tạo.

Rõ ràng điều này không hoàn toàn dễ hiểu, nghĩa là bạn vẫn có thể truy cập các phần khác trong hệ thống của mình. Tuy nhiên, điều này cung cấp một môi trường tạm thời sạch mà bạn có thể sử dụng để thử nghiệm.


bạn đã thử sử dụng scriptchưa?
h3rrmiller

@ h3rrmiller - Có, mặc dù tôi có xu hướng không sử dụng nó ngoài sở thích.
Chris Xuống

2

chrootlà một cách, sử dụng VM là một cách khác. Bạn có thể xây dựng môi trường chroot trên LV, chụp nhanh nó, làm bất cứ điều gì và sau đó trở lại trạng thái chụp nhanh.

Hoặc - thực hiện tương tự với VM (ảnh chụp nhanh đĩa) và hoàn nguyên tất cả các thay đổi sau đó.

Tôi thường làm điều này với một VM mới được cài đặt (sử dụng VirtualBox và kickstart hoặc autoyast với PXE-boot).

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.