When using the file tool to report the mime type of a file, your distributions file-libs package which ships the patterns that detect the mime type of the script maybe slightly out dated.

For example, take the python script below.

#!/usr/bin/env python

import sys

def main():
    print("hello world")

if __name__ == '__main__':

Running file over this python script will report a mime-type of text/x-java for older distributions such as CentOS6 (see bug report #9999).

$ file --mime-type text/x-java

file will accept local magic data found in /etc/magic so by adding the following pattern below to /etc/magic, we should be able to have file report the correct mime-type for our hello world script.

0       regex    \^(\ |\t)*def\ +[a-zA-Z]+
>&0     regex   \ *\(([a-zA-Z]|,|\ )*\):$ Python script text executable
!:mime text/x-python
$ file --mime-type text/x-python


comments powered by Disqus