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并且在运行脚本后文件就在那里)
尝试以下操作,它将使用 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附加您的运行屏幕会话。
| 归档时间: |
|
| 查看次数: |
7238 次 |
| 最近记录: |