我好像在追逐自己的尾巴……
终端命令
x-terminal-emulator -e ${SHELL}' -c cd\ .;"ls";'${SHELL}
在 Ubuntu 14.04/16.04/18.04 上运行时会启动一个新终端并列出当前目录(按预期)。
如果我修改命令以包含“-l”参数
x-terminal-emulator -e ${SHELL}' -c cd\ .;"ls -l";'${SHELL}
我在 Ubuntu 14.04/16.04 上获得了预期的结果,但在 18.04(作为 VirtualBox 下的虚拟机)上启动的终端包含以下消息:
sh: 1: ls -l: not found
我在 Ubuntu 17.10 上运行了这两个命令,虽然两个命令都产生了预期的结果,但我注意到以下消息:
Option “-e” is deprecated and might be removed in a later version of gnome-terminal.
Use “-- ” to terminate the options and put the command line to execute after it.
Warning: DESKTOP_STARTUP_ID not set and no fallback available.
底线:我无法弄清楚我是否遇到了一些新问题,即在最新的终端中空格处理方式不同和/或现在必须使用“--”,而我使用的命令不正确。
最终,我想要的不仅仅是“ls -l”,而是一串以“&&”分隔的命令。
答案1
我无法确定为什么会收到此错误消息
sh: 1: ls -l: not found
但确实实现了我的目标。有效的命令(这是我最终想要的简化版本)是:
gnome-terminal -- /bin/bash -c 'cd .; ls -l; /bin/bash'
我采取的方法是仅在 Ubuntu 上运行它,因此可以“安全地”用 gnome-terminal 替换 x-terminal-emulator 并用 bash 替换 $SHELL。