Это вызвано тем, что/etc/init.d/не установлен в $PATH.
Это - по существу:-separated список каталогов. При выполнении команды оболочка перерывает каждый из этих каталогов, один за другим, пока это не находит каталог, где исполняемый файл существует. (http://www.cs.purdue.edu/homes/cs348/unix_path.html)
Использовать:
tmux split-window "shell command"
Команда split-window
имеет следующий синтаксис:
split-window [-dhvP] [-c start-directory] [-l размер | -p проценты] [-t панель задач] [shell-command] [-F формат]
(из man tmux
, раздел "Окна и панели"). Обратите внимание, что порядок важен - команда должна прийти после любой из предыдущих опций, которые появляются, и она должна быть единственным аргументом, поэтому вы должны процитировать ее, если в ней есть пробелы.
Для команд типа ping -c
, которые быстро заканчиваются, вы можете сначала установить опцию remain-on-exit
:
tmux set-option remain-on-exit on
tmux split-window 'ping -c 3 127.0.0.1'
Панель останется открытой после завершения ping
, но будет помечена как "мертвая" до тех пор, пока вы не закроете ее вручную.
Если вы не хотите изменять общую опцию, существует другой подход. Команда выполняется с помощью sh -c
, и вы можете использовать это, чтобы заставить окно остаться в рабочем состоянии в конце:
tmux split-window 'ping -c 3 127.0.0.1 ; read'
Здесь вы используете оболочку read
command, чтобы дождаться ввода пользователем новой строки после того, как основная команда завершится. В этом случае вывод команды будет продолжаться до тех пор, пока вы не нажмете Enter в панели, после чего она автоматически закроется.
bash --rcfile
Этот метод открывает новую оболочку, запускает команды и оставляет вас там после завершения команд:
tmux-split-cmd() ( tmux split-window -dh -t $TMUX_PANE "bash --rcfile <(echo '. ~/.bashrc;$*')" )
tmux-split-cmd 'cd; pwd; ping google.com'
Или, если команда не имеет специальных терминальных символов, таких как ;
, просто:
tmux-split-cmd ping google.com
Здесь используется:
--rcfile
:Как вызвать bash, запустить команды внутри новой оболочки, а затем вернуть управление пользователю? | Переполнение стекаTMUX_PANE
:Как разделить окно, в котором выполнялась команда «tmux split -window», вместо текущего окна?Другой интересный вариант:
tmux-split-cmd-uniq() (
if [ "$(tmux list-panes | wc -l | cut -d' ' -f1)" -ne 1 ]; then
tmux kill-pane -t 1
fi
tms "$@"
)
, который уничтожает предыдущее разделение, если оно уже существует, и помогает всегда сохранять только одно дополнительное разделение.