| 12345678910111213141516171819202122232425262728293031323334353637 | 
							- 'use strict';
 
- var fs = require('fs');
 
- var LRU = require('lru-cache');
 
- var shebangCommand = require('shebang-command');
 
- var shebangCache = new LRU({ max: 50, maxAge: 30 * 1000 });  // Cache just for 30sec
 
- function readShebang(command) {
 
-     var buffer;
 
-     var fd;
 
-     var shebang;
 
-     // Check if it is in the cache first
 
-     if (shebangCache.has(command)) {
 
-         return shebangCache.get(command);
 
-     }
 
-     // Read the first 150 bytes from the file
 
-     buffer = new Buffer(150);
 
-     try {
 
-         fd = fs.openSync(command, 'r');
 
-         fs.readSync(fd, buffer, 0, 150, 0);
 
-         fs.closeSync(fd);
 
-     } catch (e) { /* empty */ }
 
-     // Attempt to extract shebang (null is returned if not a shebang)
 
-     shebang = shebangCommand(buffer.toString());
 
-     // Store the shebang in the cache
 
-     shebangCache.set(command, shebang);
 
-     return shebang;
 
- }
 
- module.exports = readShebang;
 
 
  |