Tôi nghi ngờ không có câu trả lời thực sự tốt cho việc này. gnome-terminal
tìm thấy bash
thư mục làm việc hiện tại bằng cách kiểm tra /proc/<pid>/cwd
, có liên kết tượng trưng được mở rộng (có thể vì lý do bảo mật, nếu không có gì khác). Tôi không biết một cách khác cho một quy trình để tìm thư mục làm việc của quy trình khác.
Như một cách giải quyết, có một số thủ thuật bash bạn có thể thử, nhưng hãy xem CẢNH BÁO bên dưới! Trong .bashrc:
...
PROMPT_COMMAND='pwd >~/.bashlocal_saved_dir'
...
[ -n "$PS1" -a -f ~/.bashlocal_saved_dir ] && cd `cat ~/.bashlocal_saved_dir`
# end of .bashrc
Điều này sẽ làm hai việc. Đầu tiên, mỗi khi bash hiển thị lời nhắc, đầu tiên nó sẽ ghi thư mục làm việc hiện tại của nó vào tệp .bashlocal_saved_dir
trong thư mục chính của bạn. Thứ hai, khi bash bắt đầu tương tác (trái ngược với việc chạy tập lệnh), nó sẽ thay đổi thành thư mục được lưu trong cùng tệp đó. Điều này có nghĩa là khi bạn bắt đầu một bash tương tác mới, nó sẽ bắt đầu trong cùng một thư mục như bash hiển thị lần cuối của nó. Lưu ý rằng bạn có thể nhấn Enter để tạo bash để hiển thị lại lời nhắc của nó, do đó làm cho nó trở thành lần cuối cùng. :)
CẢNH BÁO : Đây là một bản hack và tôi chỉ thử nó đến mức tôi biết nó hoạt động. Hãy nghĩ bong bóng kẹo cao su và dây giày. Nó có thể có tác dụng đáng ngạc nhiên, và chắc chắn sẽ không hoạt động sạch như gnome-terminal
cách tiếp cận. Đặc biệt, nếu bạn đang chạy nhiều tab cùng một lúc, tất cả đều thực hiện các tác vụ nền, rất có thể bạn sẽ kết thúc trong thư mục "sai" khi mở một tab mới.
.bashrc
; Hãy thử di chuyển nó tạm thời ra khỏi đường để kiểm tra. Nếu vấn đề vẫn còn, hãy thêm thông tin, ít nhất là các phiên bảngnome-terminal
vàbash
, và một danh sách chi tiết các bước để tái tạo hành vi này.