我有以下脚本:
#!/usr/bin/env bash
# set -xv
tmux new-window -n 'foo' 'source "$HOME/.rvm/scripts/rvm"; sleep 123' ;
在一台机器上它运行良好,在第二台机器上我得到一个错误:
sh: 1: source: not found
当然,从 shell 运行命令可以完美运行。怎么了?机器也有类似的点文件。
source
不是POSIX命令。请改用.
。 出现故障的计算机可能正在使用dash
作为系统外壳,而不是bash
。从bash
脚本执行tmux
的事实并不意味着bash
用于执行给定new-window
的命令。 tmux
将使用系统外壳/bin/sh
,因此该命令不应依赖于非POSIX功能,例如.
的source
同义词。