Linux 从当前终端在新终端中运行shell脚本

Linux 从当前终端在新终端中运行shell脚本,linux,shell,terminal,Linux,Shell,Terminal,如何在Linux的新终端中从Windows中的“start test.bat”这样的终端运行shell脚本,它也应该在控制台模式下工作。对于gnome,请尝试此操作 将ls替换为要运行的命令 gnome-terminal -x sh -c "ls|less" 我希望这就是您想要的以下是一个简单的示例: 要编写shell脚本,请在命令提示符下执行以下操作: echo -e '#!/bin/sh\n echo "hello world"' > abc.sh 这是这样写的: #!/bin/s

如何在Linux的新终端中从Windows中的“start test.bat”这样的终端运行shell脚本,它也应该在控制台模式下工作。

对于gnome,请尝试此操作

将ls替换为要运行的命令

gnome-terminal -x sh -c "ls|less"

我希望这就是您想要的

以下是一个简单的示例:

要编写shell脚本,请在命令提示符下执行以下操作:

echo -e '#!/bin/sh\n echo "hello world"' > abc.sh
这是这样写的:

#!/bin/sh
echo "hello world"
到名为abc.sh的文件中

接下来,您希望通过以下方式将其设置为可执行:

chmod +x abc.sh
现在,您可以通过以下方式运行它:

./abc.sh
你应该看到:

hello world
在你的终端上

要在新终端中运行,可以执行以下操作:

gnome-terminal -x ./abc.sh
或者,如果是
xterm

xterm -e ./abc.sh
这是一个例子

或者,您只需在当前终端中运行它,而是通过以下方式将其置于后台:

./abc.sh &

我来这里是想弄清楚如何让脚本生成终端并在其中自行运行,因此对于那些想这样做的人,我想出了以下解决方案:

if [ ! -t 0 ]; then # script is executed outside the terminal?
  # execute the script inside a terminal window with same arguments
  x-terminal-emulator -e "$0" "$@"
  # and abort running the rest of it
  exit 0
fi

自2020年1月起,
gnome终端
中的
-e
-x
选项仍能正常运行,但会发出以下警告:

对于
-e

#选项“-e”已弃用,可能会在更高版本中删除 gnome终端

#使用“-”终止选项并将命令行置于 在它之后执行

对于
-x

#选项“-x”已弃用,可能会在更高版本中删除 gnome终端

#使用“-”终止选项并将命令行置于 在它之后执行

基于上述信息,我确认您可以运行以下两个命令,而不会收到任何警告消息:

gnome终端--/bin/sh-c''
gnome终端--./.sh

我希望这能帮助目前有此问题的其他人:)

您需要支持哪种窗口环境?非常感谢您的帮助,我还有另一个疑问:所有类型的linux操作系统是否都支持gnome终端命令?@RaviKumar不,这通常不是真的。这在很大程度上取决于linux发行版使用的桌面环境:通常是gnome终端或xtermalso,所以在telnet会话中使用linux机器时,我需要该命令。我希望会有答案。@RaviKumar我不太清楚你的意思。嗨,桑普森。我在另一个窗口中执行的shell脚本需要挂起。因此,我的原始sh文件需要继续执行下一行命令。我该怎么做?谢谢等等,如果脚本上调用了参数怎么办?他们不会在新的终端上看到剧本,对吗?