Is it possible to change the PS1 periodically by a script in the background?
Clash Royale CLAN TAG#URR8PPP
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
I just came across the PS1 variable.
It is possible to change the prompt by simply changing this variables value,
for instance:
PS1="h"
hostname as Prompt
PS1="j"
numbers of current jobs as Prompt
PS1="t"
current time as Prompt
PS!="j running on h :"
or more complex string with many substitutions
Now since there is something like a background process that does not occupy the shell, I thought if it was possible to write a script that changes the value of PS1 each 5 seconds once that could be running whole time in the background.
Pseudo-Script:
Repeat
PS1="j jobs"
sleep 5 seconds
PS1="time: t"
sleep 5 seconds
PS1="Command History: !"
sleep 5 seconds
If it is possible, how would you implement it in bash shell script ?
shell-script command-line prompt
add a comment |
I just came across the PS1 variable.
It is possible to change the prompt by simply changing this variables value,
for instance:
PS1="h"
hostname as Prompt
PS1="j"
numbers of current jobs as Prompt
PS1="t"
current time as Prompt
PS!="j running on h :"
or more complex string with many substitutions
Now since there is something like a background process that does not occupy the shell, I thought if it was possible to write a script that changes the value of PS1 each 5 seconds once that could be running whole time in the background.
Pseudo-Script:
Repeat
PS1="j jobs"
sleep 5 seconds
PS1="time: t"
sleep 5 seconds
PS1="Command History: !"
sleep 5 seconds
If it is possible, how would you implement it in bash shell script ?
shell-script command-line prompt
1
I don't think it is... but just think how irritating that could be?
– Sobrique
Mar 31 '15 at 18:23
add a comment |
I just came across the PS1 variable.
It is possible to change the prompt by simply changing this variables value,
for instance:
PS1="h"
hostname as Prompt
PS1="j"
numbers of current jobs as Prompt
PS1="t"
current time as Prompt
PS!="j running on h :"
or more complex string with many substitutions
Now since there is something like a background process that does not occupy the shell, I thought if it was possible to write a script that changes the value of PS1 each 5 seconds once that could be running whole time in the background.
Pseudo-Script:
Repeat
PS1="j jobs"
sleep 5 seconds
PS1="time: t"
sleep 5 seconds
PS1="Command History: !"
sleep 5 seconds
If it is possible, how would you implement it in bash shell script ?
shell-script command-line prompt
I just came across the PS1 variable.
It is possible to change the prompt by simply changing this variables value,
for instance:
PS1="h"
hostname as Prompt
PS1="j"
numbers of current jobs as Prompt
PS1="t"
current time as Prompt
PS!="j running on h :"
or more complex string with many substitutions
Now since there is something like a background process that does not occupy the shell, I thought if it was possible to write a script that changes the value of PS1 each 5 seconds once that could be running whole time in the background.
Pseudo-Script:
Repeat
PS1="j jobs"
sleep 5 seconds
PS1="time: t"
sleep 5 seconds
PS1="Command History: !"
sleep 5 seconds
If it is possible, how would you implement it in bash shell script ?
shell-script command-line prompt
shell-script command-line prompt
edited Mar 18 at 3:24
Rui F Ribeiro
42.1k1484142
42.1k1484142
asked Mar 31 '15 at 17:37
Abdul Al HazredAbdul Al Hazred
7,742214472
7,742214472
1
I don't think it is... but just think how irritating that could be?
– Sobrique
Mar 31 '15 at 18:23
add a comment |
1
I don't think it is... but just think how irritating that could be?
– Sobrique
Mar 31 '15 at 18:23
1
1
I don't think it is... but just think how irritating that could be?
– Sobrique
Mar 31 '15 at 18:23
I don't think it is... but just think how irritating that could be?
– Sobrique
Mar 31 '15 at 18:23
add a comment |
2 Answers
2
active
oldest
votes
None of the common unix shells (bash, [pd]ksh, [t]csh) have their own, internal analogue to cron in order to do automatic background tasks as you wish.
But even if they did, after you've run a command and it has come back to the prompt, that character output to show the prompt is static, not dynamic. If you sat there and watched, it would not cycle through your PS1 alternatives every 5 seconds like you are thinking. You would not see a new prompt until after you hit enter or ran another command.
However, you might be able to get what you are looking for by using GNU screen which has "taskbar" capabilities. Try starting with this.
add a comment |
I don't think it is possible, even if you incorporate the above pseudo-code in a shell script, because on each invocation of the shell script, it will start its own sub-shell where this stuff will happen and not where you want it to (your main shell). Even if you start it in the background. (script.sh &)
it is not possible to change settings in the shell from the subshell?
– Abdul Al Hazred
Mar 31 '15 at 19:47
1
This is the same reason that a sub-process cannot change it's parent process's working directory. The working directory, like environment variables such as PS1, are part of the process's environment which a child process cannot affect. This is the reason that thecd
command must be built into the shell as opposed to being a separate executable.
– DoxyLover
Mar 31 '15 at 22:36
add a comment |
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "106"
;
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: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
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%2funix.stackexchange.com%2fquestions%2f193635%2fis-it-possible-to-change-the-ps1-periodically-by-a-script-in-the-background%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
None of the common unix shells (bash, [pd]ksh, [t]csh) have their own, internal analogue to cron in order to do automatic background tasks as you wish.
But even if they did, after you've run a command and it has come back to the prompt, that character output to show the prompt is static, not dynamic. If you sat there and watched, it would not cycle through your PS1 alternatives every 5 seconds like you are thinking. You would not see a new prompt until after you hit enter or ran another command.
However, you might be able to get what you are looking for by using GNU screen which has "taskbar" capabilities. Try starting with this.
add a comment |
None of the common unix shells (bash, [pd]ksh, [t]csh) have their own, internal analogue to cron in order to do automatic background tasks as you wish.
But even if they did, after you've run a command and it has come back to the prompt, that character output to show the prompt is static, not dynamic. If you sat there and watched, it would not cycle through your PS1 alternatives every 5 seconds like you are thinking. You would not see a new prompt until after you hit enter or ran another command.
However, you might be able to get what you are looking for by using GNU screen which has "taskbar" capabilities. Try starting with this.
add a comment |
None of the common unix shells (bash, [pd]ksh, [t]csh) have their own, internal analogue to cron in order to do automatic background tasks as you wish.
But even if they did, after you've run a command and it has come back to the prompt, that character output to show the prompt is static, not dynamic. If you sat there and watched, it would not cycle through your PS1 alternatives every 5 seconds like you are thinking. You would not see a new prompt until after you hit enter or ran another command.
However, you might be able to get what you are looking for by using GNU screen which has "taskbar" capabilities. Try starting with this.
None of the common unix shells (bash, [pd]ksh, [t]csh) have their own, internal analogue to cron in order to do automatic background tasks as you wish.
But even if they did, after you've run a command and it has come back to the prompt, that character output to show the prompt is static, not dynamic. If you sat there and watched, it would not cycle through your PS1 alternatives every 5 seconds like you are thinking. You would not see a new prompt until after you hit enter or ran another command.
However, you might be able to get what you are looking for by using GNU screen which has "taskbar" capabilities. Try starting with this.
answered Mar 31 '15 at 18:33
BytorBytor
43137
43137
add a comment |
add a comment |
I don't think it is possible, even if you incorporate the above pseudo-code in a shell script, because on each invocation of the shell script, it will start its own sub-shell where this stuff will happen and not where you want it to (your main shell). Even if you start it in the background. (script.sh &)
it is not possible to change settings in the shell from the subshell?
– Abdul Al Hazred
Mar 31 '15 at 19:47
1
This is the same reason that a sub-process cannot change it's parent process's working directory. The working directory, like environment variables such as PS1, are part of the process's environment which a child process cannot affect. This is the reason that thecd
command must be built into the shell as opposed to being a separate executable.
– DoxyLover
Mar 31 '15 at 22:36
add a comment |
I don't think it is possible, even if you incorporate the above pseudo-code in a shell script, because on each invocation of the shell script, it will start its own sub-shell where this stuff will happen and not where you want it to (your main shell). Even if you start it in the background. (script.sh &)
it is not possible to change settings in the shell from the subshell?
– Abdul Al Hazred
Mar 31 '15 at 19:47
1
This is the same reason that a sub-process cannot change it's parent process's working directory. The working directory, like environment variables such as PS1, are part of the process's environment which a child process cannot affect. This is the reason that thecd
command must be built into the shell as opposed to being a separate executable.
– DoxyLover
Mar 31 '15 at 22:36
add a comment |
I don't think it is possible, even if you incorporate the above pseudo-code in a shell script, because on each invocation of the shell script, it will start its own sub-shell where this stuff will happen and not where you want it to (your main shell). Even if you start it in the background. (script.sh &)
I don't think it is possible, even if you incorporate the above pseudo-code in a shell script, because on each invocation of the shell script, it will start its own sub-shell where this stuff will happen and not where you want it to (your main shell). Even if you start it in the background. (script.sh &)
answered Mar 31 '15 at 18:59
Nikolai Alexandrov GeorgievNikolai Alexandrov Georgiev
1313
1313
it is not possible to change settings in the shell from the subshell?
– Abdul Al Hazred
Mar 31 '15 at 19:47
1
This is the same reason that a sub-process cannot change it's parent process's working directory. The working directory, like environment variables such as PS1, are part of the process's environment which a child process cannot affect. This is the reason that thecd
command must be built into the shell as opposed to being a separate executable.
– DoxyLover
Mar 31 '15 at 22:36
add a comment |
it is not possible to change settings in the shell from the subshell?
– Abdul Al Hazred
Mar 31 '15 at 19:47
1
This is the same reason that a sub-process cannot change it's parent process's working directory. The working directory, like environment variables such as PS1, are part of the process's environment which a child process cannot affect. This is the reason that thecd
command must be built into the shell as opposed to being a separate executable.
– DoxyLover
Mar 31 '15 at 22:36
it is not possible to change settings in the shell from the subshell?
– Abdul Al Hazred
Mar 31 '15 at 19:47
it is not possible to change settings in the shell from the subshell?
– Abdul Al Hazred
Mar 31 '15 at 19:47
1
1
This is the same reason that a sub-process cannot change it's parent process's working directory. The working directory, like environment variables such as PS1, are part of the process's environment which a child process cannot affect. This is the reason that the
cd
command must be built into the shell as opposed to being a separate executable.– DoxyLover
Mar 31 '15 at 22:36
This is the same reason that a sub-process cannot change it's parent process's working directory. The working directory, like environment variables such as PS1, are part of the process's environment which a child process cannot affect. This is the reason that the
cd
command must be built into the shell as opposed to being a separate executable.– DoxyLover
Mar 31 '15 at 22:36
add a comment |
Thanks for contributing an answer to Unix & Linux Stack Exchange!
- 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%2funix.stackexchange.com%2fquestions%2f193635%2fis-it-possible-to-change-the-ps1-periodically-by-a-script-in-the-background%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
1
I don't think it is... but just think how irritating that could be?
– Sobrique
Mar 31 '15 at 18:23