3

I have created a simple bash script called echo.sh. Which outputs a string. I've made sure its executable. And i then added it to the "startup applications" program through the GUI interface. However when i reboot my machine, it doesn't appear to of been executed, as there is no echo appearing in a terminal.

from my understanding shouldn't the script ,when executed, open up a terminal automatically from my understanding because of the STDOUT being the terminal file. However the script works fine if i launch it myself from the terminal.

echo.sh

#!/bin/bash echo "hello this is a bash script talking" 

Making it Executable

chmod +x echo.sh 

Adding to "startup applications with correct directory to file"/home/sam/Documents/bash/echo.sh

Outcome

However when i reboot the system, the script doesn't run as expected, and no terminal appears with the echo message. I'm unsure as to why, and i may be completely missing the point, if so please let me know.

just to note, all my other bash scripts work , such as my "cleanup.sh" script which is also in the "startup applications" program.

Attempted fixes

I've tried redirecting the STDOUT to the terminal file /dev/tty. However this doesn't seem to work.

#!/bin/bash echo "hello this is a bash script talking" >/dev/tty 

I've also tested a bash script with just a simple rm command, just to check if it was just the echo command that was having a problem. However when added to start up applications or .bashrc file, it doesn't delete the test.txt in the same directory as the script. However works when i execute manually from the terminal.

#!/bin/bash rm ./test.txt 

I've also tested startup applications program itself with just opening Firefox, with just the command Firefox. Which works without an issue. So their doesn't seem to be an issue with the startup applications program itself?

10
  • If you want to run this script during starting terminal add it to .bashrc file. Probably it runs at startup but you cannot see the output. You can check dmesg log, but I'm not sure if it's going to be there
    – mrc02_kr
    CommentedJul 11, 2017 at 12:55
  • Thanks for the response @mrc02_kr. However it doesn't seem to work.
    – Hexodus
    CommentedJul 11, 2017 at 13:21
  • Try to avoid using relative paths in scripts. It leads to unexpected behavior and then a lot of debugging. Try to redirect echo to file: echo "bash script" > /root/test_bash.txt. Also tell us what do you want to achive ? Maybe it's a better way to do it?
    – mrc02_kr
    CommentedJul 11, 2017 at 13:37
  • 1
    Does this answer your question? script running in crontab not giving output on shell screen
    – AdminBee
    CommentedJul 6, 2020 at 8:36
  • 1
    Define what you mean by "startup" - I don't use gnome but this looks like an xdg autostart config - it will run when you login, not when the machine starts. And you won't see it running because it doesn't open a terminal
    – symcbean
    CommentedMay 8, 2021 at 23:33

4 Answers 4

0

The script probably works, but the STDOUT of the script (wherever the output is directed to) is connected to the process on your OS that is concerned with launching startup scripts like this, which does not run in a terminal, but is a user hidden process within for example the kernel. To open up a terminal with this message you should probably edit it to

#!/bin/bash gnome-terminal -e 'echo "hello this is a bash script talking"' 

(I'm not on Ubuntu right now so can't test this, but the gist is to explicitly open a terminal where you want this message to show up in)

6
  • Thanks for the response, However this doesn't seem to work.
    – Hexodus
    CommentedJul 11, 2017 at 13:11
  • What happens when you enter gnome-terminal -e 'echo "hello this is a bash script talking"' in a terminal?
    – rien333
    CommentedJul 11, 2017 at 13:28
  • Executing it manually, it flashed opened up a window and quickly closed. Not sure if it was a terminal, however from the quick flash of an application appearing, it didn't look like a terminal. When added to the startup applications and rebooted,nothing occurred.
    – Hexodus
    CommentedJul 11, 2017 at 13:37
  • 1
    @Hexodus I suggest gnome-terminal -x bash -c 'echo "hello this is a bash script talking";bash' so-that you can examine.
    – Pandya
    CommentedJul 11, 2017 at 17:44
  • 1
    ... or ad a read call to wait for the user to press Enter.
    – Kusalananda
    CommentedMar 24, 2019 at 8:15
0

You can check the config file of the autostart file you created with

cat ~/.config/autostart/NAME.desktop 

If you want to execute your script in a terminal you should add Terminal=true to the file.
You can also set Hidden=false accordingly to what you want to achieve.

    -1

    The simples method use the crontab like so;

    crontab -e 

    Add your script at the of the contrab file

    # @reboot /path-to-your-script/your-script-name.sh 

    Then reboot to observe the change

    2
    • 1
      Welcome to the site, and thank you for your contribution. However, it does not seem that the OP has a problem adding the script to the crontab, but rather that the OP expects to see console output from a script run via crontab which doesn't happen (for several reasons).
      – AdminBee
      CommentedJul 6, 2020 at 8:39
    • 1
      @AdminBee To be exact, the OP didn't mention crontab at all. The intention rather seems to open a terminal on logon (after the desktop is shown) which would execute a script and remain open.CommentedApr 3, 2024 at 8:13
    -2

    You should add /bin/bash -c in front of your '/path/to/your/script.sh'

    /bin/bash -c '/path/to/your/script.sh' 

    The echo command output will be visible in your system logs, not in your terminal.

    journalctl -b will show you the output of system boot logs, which is when your script is run.

      You must log in to answer this question.

      Start asking to get answers

      Find the answer to your question by asking.

      Ask question

      Explore related questions

      See similar questions with these tags.