Chcę użyć skryptu do otwarcia sesji tmux z 6 oknami, każdy w innym katalogu. Zacząłem a script I found i starał ten pierwszy:Jak uruchomić tmux z kilkoma oknami w różnych katalogach?
tmux new-session -s xyz -n etc -d 'cd /etc'
tmux new-window -t xyz:1 -n var 'cd /var/log'
Ale wkrótce okazało się, że to nie będzie działać, jak się spodziewałem - okno zostanie zamknięte po dopełnia poleceń powłoki.
Więc mój następny pomysł był aby rozpocząć nową powłokę tak:
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
To prawie działa. Ale jeśli zacznę więcej niż około 4 oknami, ja często zobaczyć następujące błędy bash w jednym z okien po starcie:
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
Nie mam pojęcia, dlaczego tak się dzieje, ale nadal uważam, że nie robię to prawo. Czy istnieje lepszy sposób na skonfigurowanie sesji tmux w kilku katalogach?
Prawdopodobnie niektóre niecytowane zmienne w .bashrc lub podobnie produkują spacje w zmiennych.Jeśli masz kod taki jak 'if [[-f $ {plik}]]; ... 'i file =" filename w spaces ", spowoduje to wysadzenie w powietrze (podobnie jak w przypadku zmiennych, nie tylko vars plików). 'set -vx' jest twoim przyjacielem. Powodzenia. – shellter
Dzięki, wydaje się, że masz rację. Jedna z linii ofensywnych w moim '.bashrc' wydaje się być' [-x/usr/bin/lesspipe] && eval "$ (SHELL =/bin/sh lesspipe)" '. Jeśli go skomentuję, błąd zniknie. Mimo że nadal nie rozumiem, na czym polega problem: dzieje się tak tylko w jednym z 6 okien. I nawet za każdym razem, gdy tworzę sesję tmux. –
hm ... to nie jest rodzaj przestrzeni, o której myślałem, to nie jest wartość zmiennej, ale podstawienie polecenia, tj. '$ (POWŁOKA ....)' i spacje są tam w porządku. Więc ... często brakujący cytat (pojedynczy lub dbl) powyżej linii, która jest pokazywana jako błąd, spowoduje takie problemy. Jeśli chcesz umieścić swój plik .bashrc, aby wkleić bin i edytować wiadomość z linkiem do niego, prawdopodobnie możemy rozwiązać ten problem. Powodzenia. – shellter