What scripts should not be ported from bash to python?

What scripts should not be ported from bash to python?

I decided to rewrite all our Bash scripts in Python (there are not so many of them) as my first Python project. The reason for it is that although being quite fluent in Bash I feel it's somewhat archaic language and since our system is in the first stages of its developments I think switching to Python now will be the right thing to do.

Are there scripts that should always be written in Bash? For example, we have an init.d daemon script - is it OK to use Python for it? We run CentOS.


How to send a EML file as email using python script to list of emails one at a time?


How to retrieve value from etc/sysconfig in Python
It is OK in the sense that you can do it.

Displaying an image from the tmp directory
But the scripts in /etc/init.d usually need to load config data and some functions (for example to print the nice green OK on the console) which will be hard to emulate in Python..
How do they read clusters/cylinders/sectors from the disk?
So try to convert those which make sense (i.e.

Use OpenBSD's malloc, realloc and free in my program
those which contain complex logic).

Strange results while measuring delta time on Linux
If you need job control (starting/stopping processes), then bash is better suited than Python..
Java OutOfMemoryError due to Linux RAM disk cache not freed

Spring ResourceServlet throws too many open files exception in jetty and tomcat under linux


Generally, scripts in /etc/init.d are written in the "native shell" of the OS (e.g.

bash, sh, posix-sh, etc).

This is especially true of scripts that will be run at the lower init levels (e.g.

not every directory will be mounted in single user mode, including wherever python or the site-libraries might be installed).

. Most OS's provide some "helper functions" that make writing scripts in some native shell easier.

These scripts define certain return codes and messages that are required/desired when writing service scripts.

On RedHat based systems, see: .
Beyond that, the service scripts in /etc/init.d can be written in any language (including compiled languages).

The general calling syntax will need to be supported.

Typically there are three arguments that should be supported: start, stop, and status.

Some additional arguments might be appropriate, depending on the purpose of the scripts.

% /etc/init.d/foo (start|stop|status)   


Every task has languages that are better suited for it and less so.

Replacing the backtick ` quote of sh is pretty ponderous in Python as would be myriad quoting details, just to name a couple.

There are likely better projects to cut your teeth on.. And all that they said above about Python being relatively heavyweight and not necessarily available when needed..


Certain scripts that I write simply involving looping over a glob in some directories, and then executing some a piped series of commands on them.

This kind of thing is much more tedious in python..

74 out of 100 based on 49 user ratings 124 reviews