我正在寻找一种方法来确保我的命令在某些使用 csh 作为默认 shell 的 FreeBSD 11 机器上由 bash 执行。
以下是我在 Linux CentOS / Debian / MacOS X / pfSense 2.3(在 FreeBSD 10.3 上运行)甚至 Windows 10 bash 上运行的代码,但在 FreeBSD 11 上不起作用
cat "/some/filelist" | ssh -i "/home/user/.ssh/some_key" user@freebsd11 'bash -c "while read -r file; do stat -f \"%N;%c;%m\" \"\$file\"; done | sort"'
Run Code Online (Sandbox Code Playgroud)
FreeBSD 11 上前一个命令的输出似乎是一个 csh 错误消息
Unmatched ".
Run Code Online (Sandbox Code Playgroud)
在检查哪个 shell 运行时,似乎是 csh 运行。以下返回“csh”
ssh -i /home/user/.ssh/some_key user@freebsd11 'bash -c "echo $0"'
Run Code Online (Sandbox Code Playgroud)
根据我的理解,BSD 系统不允许更改 shell,除非使用 heredoc,但我不能使用 heredoc 发送 cat "/some/filelist" …