screen also binds
C-a C-c to create a new window, so you might want to add another line to your
.screenrc to handle this case:
bind c stuff "screen -X chdir \$PWD;screen^M"
bind ^c stuff "screen -X chdir \$PWD;screen^M"
Clarification about how this command works:
stuff puts its argument string directly into the current window:
Stuff the string
string in the input buffer of the current window.
screen -X chdir \$PWD tells screen to execute the command
chdir, which changes its operational directory (where new screen windows will start) to the environment variable
$PWD, which contains the current working directory. This is impossible to do within
.screenrc alone; therefore, manipulating the input buffer with
stuff is necessary.
screen command within an already running
screen creates a new window just like
^M generates a carriage return, which tells the shell to execute the command which is now in the buffer. Without it, you would have to press
C-m, of course).
Consequently, this bind will leave cruft like this in the window you execute it in:
user@host:~/directory$ screen -X chdir $PWD;screen