Nhân bản đường dẫn thật dễ dàng nếu bạn có thể chạy chương trình đầu cuối của mình từ dòng lệnh. Giả sử bạn đang sử dụng xterm
, chỉ cần chạyxterm &
từ dấu nhắc của thiết bị đầu cuối mà bạn muốn sao chép. Xterm mới sẽ bắt đầu trong cùng thư mục, trừ khi bạn đã cấu hình nó để bắt đầu như một vỏ đăng nhập. Bất kỳ biến môi trường xuất nào cũng sẽ chuyển qua, nhưng biến không xuất sẽ không.
Một cách nhanh chóng và bẩn thỉu để sao chép toàn bộ môi trường (bao gồm cả các biến chưa xuất) như sau:
# from the old shell:
set >~/environment.tmp
# from the new shell:
. ~/environment.tmp
rm ~/environment.tmp
Nếu bạn đã đặt bất kỳ tùy chọn vỏ tùy chỉnh nào, bạn cũng sẽ phải áp dụng lại các tùy chọn đó.
Bạn có thể gói toàn bộ quá trình này thành một tập lệnh dễ chạy. Có kịch bản lưu môi trường vào một tệp đã biết, sau đó chạy xterm
. Yêu cầu .bashrc kiểm tra tệp đó và lấy nguồn đó và xóa nó nếu tìm thấy.
Cách khác, nếu bạn không muốn bắt đầu một thiết bị đầu cuối từ một thiết bị đầu cuối khác hoặc chỉ muốn kiểm soát nhiều hơn, bạn có thể sử dụng một cặp hàm mà bạn xác định trong .bashrc:
putstate () {
declare +x >~/environment.tmp
declare -x >>~/environment.tmp
echo cd "$PWD" >>~/environment.tmp
}
getstate () {
. ~/environment.tmp
}
EDIT : Đã thay đổi putstate
để sao chép trạng thái "đã xuất" của các biến shell, để khớp với phương thức khác. Có những thứ khác cũng có thể được sao chép, chẳng hạn như tùy chọn shell (xem help set
) - vì vậy có chỗ để cải thiện trong kịch bản này.