我正在尝试编写一个 bash 脚本来创建与一组特定窗口的 screen (软件) session ,并 cd
到每个窗口上的特定目录。
这是我目前的脚本:
#!/bin/bash
killall screen;
screen -AmdS work;
screen -S work bash -c "cd myDir";
问题是我似乎无法更改该 session 中的目录。运行此脚本后,我运行 $ screen -r
,当前目录仍然是我的默认目录 (~/)。
(我已经尝试将 cd
命令更改为 touch myFile
,运行脚本后文件就在那里)
最佳答案
尝试以下操作,它将打开一个带有 bash 的新 screen session ,这将更改目录并打开一个新的 bash,并将此目录作为当前目录:
screen -S work bash -c 'cd myDir && exec bash'
添加 -d -m
以在分离模式下运行它。重新附加后,您将位于 myDir
中:
screen -S work -d -m bash -c 'cd myDir && exec bash'
更好的解决方案
以下代码将在目录 myDir1/2/3
中创建一个包含 3 个 screen 的分离 screen ,每个 screen 运行 myCommand1/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 -
注意最后的 cd -
会让您回到原来的工作目录。
最后只需使用 screen -r work
附加您正在运行的 screen session 。
关于linux - 如何使用 bash 脚本显示 "setup" screen ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41068502/