如何使用 bash 脚本“设置”屏幕

Fáb*_*uci 4 linux bash gnu-screen

我正在尝试编写一个 bash 脚本来创建一个带有一组特定窗口的屏幕(软件)会话,以及cd每个窗口的特定目录。

这是我到目前为止的脚本:

#!/bin/bash

killall screen;
screen -AmdS work;
screen -S work bash -c "cd myDir";
Run Code Online (Sandbox Code Playgroud)

问题是我似乎无法更改该会话中的目录。运行这个脚本后,我运行$ screen -r,当前目录仍然是我的默认目录(~/)。

(我已经尝试将cd命令更改为,touch myFile并且在运行脚本后文件就在那里)

mar*_*.47 6

尝试以下操作,它将使用 bash 打开一个新的屏幕会话,这将更改目录并以当前目录打开一个新的 bash:

screen -S work bash -c 'cd myDir && exec bash'
Run Code Online (Sandbox Code Playgroud)

添加-d -m以在分离模式下运行它。重新连接后,您将进入myDir

screen -S work -d -m bash -c 'cd myDir && exec bash'
Run Code Online (Sandbox Code Playgroud)

更好的解决方案

以下代码将创建一个分离的屏幕,其中有 3 个屏幕,每个屏幕都myCommand1/2/3在目录 中运行myDir1/2/3

cd myDir1
screen -S work -d -m
screen -S work -X exec myCommand1
screen -S work -X chdir myDir2
screen -S work -X screen
screen -S work -X exec myCommand2
screen -S work -X chdir myDir3
screen -S work -X screen
screen -S work -X exec myCommand3
cd -
Run Code Online (Sandbox Code Playgroud)

请注意最后cd -一个将使您返回到原始工作目录。

最后只用于screen -r work附加您的运行屏幕会话。