Terminal running bash/rsync script does not close with exit (MacOS High SIerra)


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Terminal running bash/rsync script does not close with exit (MacOS High SIerra)
# 8  
Old 03-07-2019
Quote:
Originally Posted by Don Cragun
The fact that you have to take an intermediate step to specify what is to be used to run your script tells me that something is wrong. I'm guessing that you skipped part of the 1st step I mentioned in post #5. Please show us the output from the commands:
Code:
ls -l script
head script

where script is the name of the file containing your shell script.
Here is the output,
Code:
My-iMac:rsync_backup my_user$ ls -l
total 392
-rwxrwxrwx@ 1 my_user  staff   88056 Mar  5 20:22 data_backup_icon.png
-rwxrwxrwx@ 1 my_user  staff  102078 Mar  5 20:24 external_backup_icon.png
-rwxrwxrwx@ 1 my_user  staff    1314 Mar  6 22:26 rsync_data_backup.sh
-rwxrwxrwx@ 1 my_user  staff    1794 Mar  5 23:11 rsync_external_backup.sh

Code:
My-iMac:rsync_backup my_user$ head rsync_data_backup.sh 
#!/bin/bash

I also did which just to make sure that bash was were it was expected.
Code:
My-iMac:rsync_backup my_user$ which bash
/bin/bash

How would MacOS know to read the first line and use that to know that the file is a script that should be run in bash. Is that the default behavior for any file with a .sh extension or does Finder read the first line of every file it opens to look for #!? I believe that you can set the "open with" preference in the file Get Info window as well as in finder.

As far as I can tell with what you are saying, my script file should run in Terminal by double clicking without having to do anything special. I think the problem may be that the first application I opened the file with was the Atom editor and possibly that application did something to set the OS to open .sh files in the editor. My guess is it must be something like that. It runs now as it should.

I was told that I can get the terminal window to close when the script finished by setting a preference in Terminal preferences. It would make sense that this is a MacOS Terminal configuration issue and not an issue with the script or the way the script and window are created.

The backup is running now and I will check on the preferences when the backup is finished.

LMHmedchem
# 9  
Old 03-07-2019
Ah, yes. I see!

You name your shell script rsync_data_backup.sh and you have problems.

I name my shell script rsync_data_backup and it works just fine.

I don't know why, but having the extension .sh on your filename creates the problem you're having. Get rid of that extension and get rid of your problem. Smilie

Are we having fun yet?
These 2 Users Gave Thanks to Don Cragun For This Post:
# 10  
Old 03-07-2019
Quote:
Originally Posted by Don Cragun
I don't know why, but having the extension .sh on your filename creates the problem you're having. Get rid of that extension and get rid of your problem. Smilie
When I remove the extension, the file icon changes from the Atom text editor icon to the terminal icon. The script does work as expected now. I wonder if MacOS reads the first line of a file that doesn't have an extension to see what to open the file with.

Quote:
Originally Posted by Don Cragun
Are we having fun yet?
I'm having allot more fun now than I was with this yesterday. Smilie

On the issue of the window not closing when the script completes, if you go to Terminal > Preferences > Shell, there is a menu in the middle of the window called

when the shell exits .

There are three options on this menu,

close the window
close if the shell exited cleanly
don't close the window

mine was set to don't close the window

There are certainly cases where I would prefer to have the window stay open when the script has finished and I usually add a read statement to the end if this is the case. I'm not really sure it makes sense for that to be a global behavior since I can't see that I would want the same behavior in every script. It would be nice if exit had some options so you could specify this on a script by script basis.

There are also options in the Shell preference pane to indicate situations where ask before closing is implemented, in case that is of interest to anyone.

Thanks again,

LMHmedchem
This User Gave Thanks to LMHmedchem For This Post:
# 11  
Old 03-08-2019
My apologies for not investigating this the other day, I forgot all about it.

exit does have an option for exactly the purpose of informing the thing which called it, it returns a number 0 for success and 1-127 for various errors. I suspect that's what "close if the shell exited cleanly" is about. exit 0 to close cleanly and exit 1 to make the terminal wait and display what happened.

Drawback is, if these scripts are called by anything else, nonzero means error, not just close/not close. crontab sends emails when programs exit nonzero, for example.

Perhaps your scripts could take a --terminal commandline switch which tells them to exit nonzero?
This User Gave Thanks to Corona688 For This Post:
# 12  
Old 03-09-2019
Quote:
The script seems to work, but when I key enter, instead of the terminal window closing like it does in windows under cygwin, I get the following message,
Code:
logout
Saving session...
...copying shared history...
...saving history...truncating history files...
...completed.

[Process completed]

The terminal does not seem to function anymore but it does not close and I have to manually close it. It's not the end of the world but I don't understand why it doesn't close down on the exit command. Can anyone explain how to fix this?

It is a macOS thing. You must right click on the Terminal icon on the Dock, and select Quit.

See the screenshot attached.
Terminal running bash/rsync script does not close with exit (MacOS High SIerra)-png
This User Gave Thanks to johnprogrammer For This Post:
# 13  
Old 03-09-2019
There is an option in the MacOS terminal to close the window when the shell exits. That is what I use.

Image
These 2 Users Gave Thanks to Neo For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Issue with shutdown command in script (MacOS High Sierra)

Hello, I have a backup script that runs an rsync backup to an external drive. I use the script frequently on Windows and Linux and have installed it on a Mac. The script has an option to run shutdown after the backup has completed. Since backup can take hours to run, this is an option that is... (10 Replies)
Discussion started by: LMHmedchem
10 Replies

2. Shell Programming and Scripting

Issue with pwd for script run by double click on script (MacOS High SIerra)

Hello, I have the following script that just archives and clears some log files. #!/bin/bash # script: archive_logs_and_clear # add date to logfile names and copy archive directory # clear logs # change to script directory cd ... (4 Replies)
Discussion started by: LMHmedchem
4 Replies

3. OS X (Apple)

If you run macOS High Sierra version 10.13.1, be sure to install today's update.

Some hackers found a security hole in macOS High Sierra and tweeted it to the world before telling Apple about the problem. You can see the details from PC Magazine's daily news here: Apple Releases Fix for MacOS High Sierra 'Root' Bug. The original story this morning was published before a patch... (6 Replies)
Discussion started by: Don Cragun
6 Replies

4. UNIX for Beginners Questions & Answers

Capture power button press on MacOs High Sierra?

Hello everyone! I'm developing a MacOs Application in python and I'm having some issues trying to find information related to the power button pressed event. I know that in Ubuntu 14.04 you can find information about it on the acpi folders, but I realized that here in Mac that process is... (0 Replies)
Discussion started by: xedge
0 Replies

5. Shell Programming and Scripting

[BASH] Script to manage background scripts (running, finished, exit code)

Heyas, Since this question (similar) occur every now and then, and given the fact i was thinking about it just recently (1-2 weeks) anyway, i started to write something :p The last point for motivation was... (17 Replies)
Discussion started by: sea
17 Replies

6. Shell Programming and Scripting

Bash Question: HowTo Exit Script with User Input While Process is Running Mid-Loop?

Hi, I have written a script that allows me to repetitively play a music file $N times, which is specified through user input. However, if I want to exit the script before it has finished looping $N times, if I use CTRL+c, I have to CTRL+c however many times are left in order to complete the loop.... (9 Replies)
Discussion started by: hilltop_yodeler
9 Replies

7. Shell Programming and Scripting

[Solved] Rsh does not close connection on exit

Dear all, We have a service that we start up remotely with rsh but unfortunately, the rsh never returns to the calling server. This seems to be because the processes of the service we've just started hold the port open.RBATTE1 @ /home/RBATTE1>netstat -na|grep 49.51 tcp4 0 0 ... (1 Reply)
Discussion started by: rbatte1
1 Replies

8. UNIX for Advanced & Expert Users

close a mac terminal

Is there a trick to closing a mac terminal with a command? I would think you could just type exit into your terminal but that doesn't work. I also tried quit and close just for the hell of it and that didn't work either. Does anyone know what the command is? (1 Reply)
Discussion started by: cokedude
1 Replies

9. UNIX for Dummies Questions & Answers

SSH from MacOS X or PPC Debian to SUSE # Odd terminal chars # Eventual scripting

Well. I was recently given access to my work's machine via SSH. I'm pretty sure it's a SUSE machine, uname -a gives Linux machinename 2.6.16.60-0.54.5-bigsmp #1 SMP Fri Sep 4 01:28:03 UTC 2009 i686 i686 i386 GNU/Linux I'm not doing anything all that exciting, mostly data entry stuff. We... (14 Replies)
Discussion started by: pagrus
14 Replies

10. Shell Programming and Scripting

script does not close terminal after running

For a small script i want it so that the terminal closes when the script has completed its tasks. To do so i use at the end if the script the following: echo "Hello, World!" echo "Knowledge is power." echo "" echo "shutting down terminal in 10 seconds" exit 10 however the terminal stay's... (3 Replies)
Discussion started by: Ditzyken
3 Replies
Login or Register to Ask a Question