Tôi muốn sử dụng tập lệnh để mở phiên tmux với 6 cửa sổ, mỗi cửa sổ trong một thư mục khác. Tôi bắt đầu với a script I found và cố này đầu tiên:Làm thế nào để bắt đầu tmux với một số cửa sổ trong các thư mục khác nhau?
tmux new-session -s xyz -n etc -d 'cd /etc'
tmux new-window -t xyz:1 -n var 'cd /var/log'
Nhưng tôi sớm phát hiện ra rằng điều này sẽ không làm việc như tôi mong đợi - cửa sổ sẽ đóng cửa sau khi lệnh hoàn thành vỏ.
Vì vậy, ý tưởng tiếp theo của tôi là để bắt đầu một vỏ mới như thế này:
tmux new-session -s xyz -n etc -d 'cd /etc; bash -i'
tmux new-window -t xyz:1 -n var 'cd /var/log; bash -i'
tmux new-window -t xyz:2 -n var2 'cd /var/log; bash -i'
tmux new-window -t xyz:3 -n var3 'cd /var/log; bash -i'
tmux new-window -t xyz:4 -n var4 'cd /var/log; bash -i'
tmux new-window -t xyz:5 -n var5 'cd /var/log; bash -i'
tmux new-window -t xyz:6 -n var6 'cd /var/log; bash -i'
tmux select-window -t xyz:1
tmux -2 attach-session -t xyz
này gần như hoạt động. Nhưng nếu tôi bắt đầu nhiều hơn 4 cửa sổ, tôi thường thấy các lỗi bash sau trong một trong các cửa sổ sau khi khởi động:
bash: [: =: unary operator expected
bash: [: too many arguments
bash: [: =: unary operator expected
bash: [: =: unary operator expected
bash: [: =: unary operator expected
bash: [: =: unary operator expected
bash: [: too many arguments
bash: [: =: unary operator expected
bash: [: =: unary operator expected
bash: [: =: unary operator expected
bash: [: =: unary operator expected
bash: [: =: unary operator expected
Tôi không biết tại sao điều này xảy ra, nhưng tôi vẫn nghĩ rằng tôi không làm quyền này. Có cách nào tốt hơn để thiết lập một phiên tmux qua một số thư mục?
Có thể một số biến không được xác định trong .bashrc hoặc tương tự tạo ra khoảng trắng trong các biến.Nếu bạn có mã như 'if [[-f $ {file}]]; ... 'và file =" tên tập tin w dấu cách ", điều này sẽ thổi những thứ lên (tương tự cho bất kỳ biến, không chỉ tập tin vars). 'set -vx' là bạn của bạn. Chúc may mắn. – shellter
Cảm ơn, bạn có vẻ đúng. Một đường tấn công trong '.bashrc' của tôi có vẻ là' [-x/usr/bin/lesspipe] && eval "$ (SHELL =/bin/sh lesspipe)" '. Nếu tôi nhận xét nó, lỗi sẽ biến mất. Mặc dù tôi vẫn không hiểu vấn đề thực sự là gì: Nó chỉ xảy ra ở 1 trong số 6 cửa sổ. Và thậm chí không phải lúc nào tôi cũng tạo phiên tmux. –
hm ... đó không phải là loại không gian tôi đã nghĩ đến, đó không phải là một giá trị biến, nhưng một sự thay thế lệnh, tức là '$ (SHELL ....)' và dấu cách là OK. Vì vậy, ... thường là một trích dẫn mất tích (đơn hoặc dbl) trên dòng được hiển thị như là một lỗi sẽ gây ra vấn đề như thế này. Nếu bạn quan tâm để đăng .bashrc của bạn để dán bin và chỉnh sửa tin nhắn của bạn với một liên kết đến nó, chúng tôi có thể có thể giải quyết này. Chúc may mắn. – shellter