Open a new terminal and source scripts
According to my experience the command should be:
gnome-terminal --working-directory='/home/<user>/project' -x bash -c "source startProject.sh; exec bash"
Notes:
-
The path of
--working-directory='/home/<user>/project'
is enclosed with single quote marks in case it contains some special characters as spaces, etc. -
The option
-x
means: execute - the remainder of the command line inside the terminal. -
And our command is
bash -c "<commands>"
. That means we execute a newbash
shell, which should run some-c "<commands>"
. -
We have two separated (by semicolon
; == new line
)<commands>
. -
The first command
source startProject.sh
will source the script file. -
The second command
exec bash
has a meaning - remain open the currentgnome-terminal
window. There are another possible approaches to do that. In the current case the commandexec
will replace the current process image with a new process image - in other words it will 'kill' the current process and will execute a new (bash
) under the current PID.
Further reading:
-
Similar question, with probably a better answer: how can I open a extra console and run a program in it with one command?
-
How to launch
gnome-terminal
from StartupApps and execute an application as root -
How to launch
gnome-terminal
with few tabs, each with different profile, at system startup
Related videos on Youtube
Heuyie
Updated on September 18, 2022Comments
-
Heuyie over 1 year
I want to write a script to activate a virtual environment and run my server for Django project in a new terminal. My startProject.sh is:
#!/bin/bash source virtualenv/bin/activate python manage.py runserver
And, I can run this script on my current terminal by:
source startProject.sh
I want to do this in a new terminal opened by a script.
#!/bin/bash gnome-terminal --working-directory=/home/myname/project -x 'source startProject.sh'
I tried this too.
#!/bin/bash gnome-terminal --working-directory=/home/myname/project -x '#!/bin/bash\n source startProject.sh'
Both do not work. Why? I read other questions but I still did not get it. I am a beginner, so please assume no experience.
-
wjandrea over 6 yearsMaybe try
gnome-terminal --working-directory=/home/myname/project -x './startProject.sh'
-
pa4080 over 6 years@wjandrea, according to this previous question of Heuyie it should be
...'source startProject.sh'
. -
pa4080 about 2 yearsDoes this answer your question? how can I open a extra console and run a program in it with one command?
-
-
Heuyie over 6 yearsIt worked! Thank you for explaining one by one! :)
-
pa4080 over 6 yearsHappy to help, @Heuyie! :)
-
Heuyie over 6 yearsOne more question. Is gnome-terminal bash or dash command? Why do not I need to specify a shell to run this command?
-
pa4080 over 6 years@Heuyie: In the above solutions we specify a shell, because: (1)
source
is Shell Builtin Command (find 'source' in the section Bash Builtin Commands), and in other casegnome-terminal
will do something wrong; (2) We want to execute a second command to remain the window open. -
pa4080 over 6 years
gnome-terminal
is a program, executable file that is located within a directory listed in your$PATH
envvar, so it is accesible as shell command. See also: How do I modify my $PATH? -
Heuyie over 6 years> it is accesible as shell command I did not know this! I was looking at list of bash/dash commands and could not find it. Thank you again! :)
-
pa4080 over 6 years@Heuyie, I remembered for this collection: “Envoriment variable PATH” on Ubuntu.