7

When we write shell scripts we do this:

#!/bin/bash

But What if bash is in /usr/bin/? How can we find it in a portable way inside script? I did this, but it gives error:

#!which bash
Majid Azimi
  • 3,018
  • 6
  • 31
  • 37

1 Answers1

11

If bash is in the different location you can hash bang it as follows:

#!/usr/bin/env bash

Location for env is pretty standard across the variants.

Karlson
  • 5,845
  • 32
  • 51
  • 7
    A similar arabesque is useful for python scripts: `#!/usr/bin/env python` – ncmathsadist Feb 19 '12 at 19:43
  • 2
    `python`, `perl` and all other scripting languages. – Karlson Feb 19 '12 at 20:02
  • 1
    But this method does have some drawbacks; see [this question](http://unix.stackexchange.com/q/29608/10454) and [this answer](http://unix.stackexchange.com/a/29620/10454). Most systems are going to install `bash` as `/bin/bash` (via a symlink if necessary) simply because so many scripts out there have `#!/bin/bash`. – Keith Thompson Feb 19 '12 at 21:59
  • 1
    There are drawbacks to using either method but the fact that scripts out there use `#!/bin/bash` doesn't necessarily make them right. – Karlson Feb 20 '12 at 00:57