If named tmux session exists, make new session and group with it, else create that named tmux sessiontmux and...
Why is "points exist" not an axiom in geometry?
Where are a monster’s hit dice found in the stat block?
What creature do these Alchemical Homunculus actions target?
Why are the books in the Game of Thrones citadel library shelved spine inwards?
Disable the ">" operator in Rstudio linux terminal
A starship is travelling at 0.9c and collides with a small rock. Will it leave a clean hole through, or will more happen?
If I delete my router's history can my ISP still provide it to my parents?
Would a National Army of mercenaries be a feasible idea?
Would these multi-classing house rules cause unintended problems?
Typing Amharic inside a math equation?
Show that the following sequence converges. Please Critique my proof.
Can you earn endless XP using a Flameskull and its self-revival feature?
Word or phrase for showing great skill at something without formal training in it
What is this metal M-shaped device for?
Enable Advanced Currency Management using CLI
What to do when being responsible for data protection in your lab, yet advice is ignored?
What does Cypher mean when he says Neo is "gonna pop"?
How do I say "Brexit" in Latin?
Why would the Pakistan airspace closure cancel flights not headed to Pakistan itself?
Isn't using the Extrusion Multiplier like cheating?
Cryptic with missing capitals
How should I handle players who ignore the session zero agreement?
Quenching swords in dragon blood; why?
Solving Fredholm Equation of the second kind
If named tmux session exists, make new session and group with it, else create that named tmux session
tmux and text selection with mouse through puttyTmux new named session exitedStart tmux session with only one window but several panesDisallowing windows to rename themselves in tmuxIn tmux, can I get `exit` to exit the containing terminal window and not the session itself?Start a new session from within tmux with ZSH_TMUX_AUTOSTART=trueHow to source a script in every panes and windows of a specific tmux sessionHow to keep terminal window title in sync with tmux windowHow to make tmux kill session as normal on terminal exitTmux starting a second session upon startup with .tmux.conf file
What I Want
I'm trying to automate connecting to a remote machine in multiple, seperate ssh terminals and have independent tmux sessions for each remote terminal while sharing the same windows (i.e. can change session settings and active window/pane without affecting other remote terminals while still having access to the same tmux windows).
I want to do this without changing how the tmux executable is initially run and entirely in a per-user way (all changes limited to /home/$USER/
).
How I'm Trying To Accomplish It
Ubuntu 16.04
TMUX 2.1 (from package manager)
I'm using MS's port of ssh
(OpenSSH) on my local system (Windows 10).
Currently when I open a remote terminal (or a local terminal for that matter) tmux is launched via /etc/profile.d/
and creates an entirely new session. I have a ~/.tmux.conf
file with the following line:
#(this is a single line in my .tmux.conf, I've broken it up here for readability)
if-shell 'tmux has-session -t theonering'
'new-session -t theonering'
'rename-session theonering'
I'm, also setting destroy-unattached on
at the session level in that second line, but I left it out for clarity here. It doesn't change the outcome.
What I Expect To Happen
This states, to the best of my understanding (see Documentation below), that "if, from a shell, tmux says it has a session named theonering
then create a new (unnamed) session and group it with theonering
. if tmux does not have a session named theonering
renamed the current session to theonering
."
What Actually Happens
Now if I connect remotely, detach from the existing session, then run the above command (prefixed with tmux
, obviously)? Works great.
But if I put it in my ~/.tmux.conf
? bupkiss. It's the same as if the line wasn't there at all. No error, no message, no deviation from stock behavior.
Documentation
if-shell
from the tmux manpage:
if-shell [-bF] [-t target-pane] shell-command command [command]
Execute the first command if shell-command returns success or the second command otherwise. Before being executed, shell-command is expanded using the rules specified in the FORMATS section, including those relevant to target-pane. With -b, shell-command is run in the background.
If -F is given, shell-command is not executed but considered success if neither empty nor zero (after formats are expanded).
How to determine if the session exists:
has-session [-t target-session]
Report an error and exit with 1 if the specified session does not exist. If it does exist, exit with 0.
How to create a new session that groups with the existing session:
new-session [-AdDEP] [-c start-directory] [-F format] [-n window-name] [-s session-name] [-t target-session] [-x width] [-y height] [shell-command]
Create a new session with name session-name.
The new session is attached to the current terminal unless -d is given. window-name and shell-command are the name of and shell command to execute in the initial window. If -d is used, -x and -y specify the size of the initial window (80 by 24 if not given).
If run from a terminal, any termios(3) special characters are saved and used for new windows in the new session.
The -A flag makes new-session behave like attach-session if session-name already exists; in this case, -D behaves like -d to attach-session.
If -t is given, the new session is grouped with target-session. This means they share the same set of windows - all windows from target-session are linked to the new session and any subsequent new windows or windows being closed are applied to both sessions. The current and previous window and any session options remain independent and either session may be killed without affecting the other. Giving -n or shell-command are invalid if -t is used.
The -P option prints information about the new session after it has been created. By default, it uses the format ‘#{session_name}:’ but a different format may be specified with -F.
If -E is used, update-environment option will not be applied. update-environment.
How to rename the current session:
rename-session [-t target-session] new-name
Rename the session to new-name.
And, of course, I'm assuming if-shell
treats exit code 0
as "success" and any other exit code as "otherwise".
ubuntu ssh tmux
add a comment |
What I Want
I'm trying to automate connecting to a remote machine in multiple, seperate ssh terminals and have independent tmux sessions for each remote terminal while sharing the same windows (i.e. can change session settings and active window/pane without affecting other remote terminals while still having access to the same tmux windows).
I want to do this without changing how the tmux executable is initially run and entirely in a per-user way (all changes limited to /home/$USER/
).
How I'm Trying To Accomplish It
Ubuntu 16.04
TMUX 2.1 (from package manager)
I'm using MS's port of ssh
(OpenSSH) on my local system (Windows 10).
Currently when I open a remote terminal (or a local terminal for that matter) tmux is launched via /etc/profile.d/
and creates an entirely new session. I have a ~/.tmux.conf
file with the following line:
#(this is a single line in my .tmux.conf, I've broken it up here for readability)
if-shell 'tmux has-session -t theonering'
'new-session -t theonering'
'rename-session theonering'
I'm, also setting destroy-unattached on
at the session level in that second line, but I left it out for clarity here. It doesn't change the outcome.
What I Expect To Happen
This states, to the best of my understanding (see Documentation below), that "if, from a shell, tmux says it has a session named theonering
then create a new (unnamed) session and group it with theonering
. if tmux does not have a session named theonering
renamed the current session to theonering
."
What Actually Happens
Now if I connect remotely, detach from the existing session, then run the above command (prefixed with tmux
, obviously)? Works great.
But if I put it in my ~/.tmux.conf
? bupkiss. It's the same as if the line wasn't there at all. No error, no message, no deviation from stock behavior.
Documentation
if-shell
from the tmux manpage:
if-shell [-bF] [-t target-pane] shell-command command [command]
Execute the first command if shell-command returns success or the second command otherwise. Before being executed, shell-command is expanded using the rules specified in the FORMATS section, including those relevant to target-pane. With -b, shell-command is run in the background.
If -F is given, shell-command is not executed but considered success if neither empty nor zero (after formats are expanded).
How to determine if the session exists:
has-session [-t target-session]
Report an error and exit with 1 if the specified session does not exist. If it does exist, exit with 0.
How to create a new session that groups with the existing session:
new-session [-AdDEP] [-c start-directory] [-F format] [-n window-name] [-s session-name] [-t target-session] [-x width] [-y height] [shell-command]
Create a new session with name session-name.
The new session is attached to the current terminal unless -d is given. window-name and shell-command are the name of and shell command to execute in the initial window. If -d is used, -x and -y specify the size of the initial window (80 by 24 if not given).
If run from a terminal, any termios(3) special characters are saved and used for new windows in the new session.
The -A flag makes new-session behave like attach-session if session-name already exists; in this case, -D behaves like -d to attach-session.
If -t is given, the new session is grouped with target-session. This means they share the same set of windows - all windows from target-session are linked to the new session and any subsequent new windows or windows being closed are applied to both sessions. The current and previous window and any session options remain independent and either session may be killed without affecting the other. Giving -n or shell-command are invalid if -t is used.
The -P option prints information about the new session after it has been created. By default, it uses the format ‘#{session_name}:’ but a different format may be specified with -F.
If -E is used, update-environment option will not be applied. update-environment.
How to rename the current session:
rename-session [-t target-session] new-name
Rename the session to new-name.
And, of course, I'm assuming if-shell
treats exit code 0
as "success" and any other exit code as "otherwise".
ubuntu ssh tmux
add a comment |
What I Want
I'm trying to automate connecting to a remote machine in multiple, seperate ssh terminals and have independent tmux sessions for each remote terminal while sharing the same windows (i.e. can change session settings and active window/pane without affecting other remote terminals while still having access to the same tmux windows).
I want to do this without changing how the tmux executable is initially run and entirely in a per-user way (all changes limited to /home/$USER/
).
How I'm Trying To Accomplish It
Ubuntu 16.04
TMUX 2.1 (from package manager)
I'm using MS's port of ssh
(OpenSSH) on my local system (Windows 10).
Currently when I open a remote terminal (or a local terminal for that matter) tmux is launched via /etc/profile.d/
and creates an entirely new session. I have a ~/.tmux.conf
file with the following line:
#(this is a single line in my .tmux.conf, I've broken it up here for readability)
if-shell 'tmux has-session -t theonering'
'new-session -t theonering'
'rename-session theonering'
I'm, also setting destroy-unattached on
at the session level in that second line, but I left it out for clarity here. It doesn't change the outcome.
What I Expect To Happen
This states, to the best of my understanding (see Documentation below), that "if, from a shell, tmux says it has a session named theonering
then create a new (unnamed) session and group it with theonering
. if tmux does not have a session named theonering
renamed the current session to theonering
."
What Actually Happens
Now if I connect remotely, detach from the existing session, then run the above command (prefixed with tmux
, obviously)? Works great.
But if I put it in my ~/.tmux.conf
? bupkiss. It's the same as if the line wasn't there at all. No error, no message, no deviation from stock behavior.
Documentation
if-shell
from the tmux manpage:
if-shell [-bF] [-t target-pane] shell-command command [command]
Execute the first command if shell-command returns success or the second command otherwise. Before being executed, shell-command is expanded using the rules specified in the FORMATS section, including those relevant to target-pane. With -b, shell-command is run in the background.
If -F is given, shell-command is not executed but considered success if neither empty nor zero (after formats are expanded).
How to determine if the session exists:
has-session [-t target-session]
Report an error and exit with 1 if the specified session does not exist. If it does exist, exit with 0.
How to create a new session that groups with the existing session:
new-session [-AdDEP] [-c start-directory] [-F format] [-n window-name] [-s session-name] [-t target-session] [-x width] [-y height] [shell-command]
Create a new session with name session-name.
The new session is attached to the current terminal unless -d is given. window-name and shell-command are the name of and shell command to execute in the initial window. If -d is used, -x and -y specify the size of the initial window (80 by 24 if not given).
If run from a terminal, any termios(3) special characters are saved and used for new windows in the new session.
The -A flag makes new-session behave like attach-session if session-name already exists; in this case, -D behaves like -d to attach-session.
If -t is given, the new session is grouped with target-session. This means they share the same set of windows - all windows from target-session are linked to the new session and any subsequent new windows or windows being closed are applied to both sessions. The current and previous window and any session options remain independent and either session may be killed without affecting the other. Giving -n or shell-command are invalid if -t is used.
The -P option prints information about the new session after it has been created. By default, it uses the format ‘#{session_name}:’ but a different format may be specified with -F.
If -E is used, update-environment option will not be applied. update-environment.
How to rename the current session:
rename-session [-t target-session] new-name
Rename the session to new-name.
And, of course, I'm assuming if-shell
treats exit code 0
as "success" and any other exit code as "otherwise".
ubuntu ssh tmux
What I Want
I'm trying to automate connecting to a remote machine in multiple, seperate ssh terminals and have independent tmux sessions for each remote terminal while sharing the same windows (i.e. can change session settings and active window/pane without affecting other remote terminals while still having access to the same tmux windows).
I want to do this without changing how the tmux executable is initially run and entirely in a per-user way (all changes limited to /home/$USER/
).
How I'm Trying To Accomplish It
Ubuntu 16.04
TMUX 2.1 (from package manager)
I'm using MS's port of ssh
(OpenSSH) on my local system (Windows 10).
Currently when I open a remote terminal (or a local terminal for that matter) tmux is launched via /etc/profile.d/
and creates an entirely new session. I have a ~/.tmux.conf
file with the following line:
#(this is a single line in my .tmux.conf, I've broken it up here for readability)
if-shell 'tmux has-session -t theonering'
'new-session -t theonering'
'rename-session theonering'
I'm, also setting destroy-unattached on
at the session level in that second line, but I left it out for clarity here. It doesn't change the outcome.
What I Expect To Happen
This states, to the best of my understanding (see Documentation below), that "if, from a shell, tmux says it has a session named theonering
then create a new (unnamed) session and group it with theonering
. if tmux does not have a session named theonering
renamed the current session to theonering
."
What Actually Happens
Now if I connect remotely, detach from the existing session, then run the above command (prefixed with tmux
, obviously)? Works great.
But if I put it in my ~/.tmux.conf
? bupkiss. It's the same as if the line wasn't there at all. No error, no message, no deviation from stock behavior.
Documentation
if-shell
from the tmux manpage:
if-shell [-bF] [-t target-pane] shell-command command [command]
Execute the first command if shell-command returns success or the second command otherwise. Before being executed, shell-command is expanded using the rules specified in the FORMATS section, including those relevant to target-pane. With -b, shell-command is run in the background.
If -F is given, shell-command is not executed but considered success if neither empty nor zero (after formats are expanded).
How to determine if the session exists:
has-session [-t target-session]
Report an error and exit with 1 if the specified session does not exist. If it does exist, exit with 0.
How to create a new session that groups with the existing session:
new-session [-AdDEP] [-c start-directory] [-F format] [-n window-name] [-s session-name] [-t target-session] [-x width] [-y height] [shell-command]
Create a new session with name session-name.
The new session is attached to the current terminal unless -d is given. window-name and shell-command are the name of and shell command to execute in the initial window. If -d is used, -x and -y specify the size of the initial window (80 by 24 if not given).
If run from a terminal, any termios(3) special characters are saved and used for new windows in the new session.
The -A flag makes new-session behave like attach-session if session-name already exists; in this case, -D behaves like -d to attach-session.
If -t is given, the new session is grouped with target-session. This means they share the same set of windows - all windows from target-session are linked to the new session and any subsequent new windows or windows being closed are applied to both sessions. The current and previous window and any session options remain independent and either session may be killed without affecting the other. Giving -n or shell-command are invalid if -t is used.
The -P option prints information about the new session after it has been created. By default, it uses the format ‘#{session_name}:’ but a different format may be specified with -F.
If -E is used, update-environment option will not be applied. update-environment.
How to rename the current session:
rename-session [-t target-session] new-name
Rename the session to new-name.
And, of course, I'm assuming if-shell
treats exit code 0
as "success" and any other exit code as "otherwise".
ubuntu ssh tmux
ubuntu ssh tmux
asked 6 mins ago
Cliff ArmstrongCliff Armstrong
1,222112
1,222112
add a comment |
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "3"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsuperuser.com%2fquestions%2f1410640%2fif-named-tmux-session-exists-make-new-session-and-group-with-it-else-create-th%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Super User!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsuperuser.com%2fquestions%2f1410640%2fif-named-tmux-session-exists-make-new-session-and-group-with-it-else-create-th%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown