Should I save my scripts with the .sh extension?
Solution 1:
No, it is not a good practice, you should keep your scripts without extension. Note, that scripts being part of packages doesn't have a .sh extension, i.e. update-grub, not update-grub.sh. If you are still not convinced, then be advised, that Google Shell Style Guide says:
Executables should have no extension (strongly preferred) or a .sh extension. Libraries must have a .sh extension and should not be executable.
PS You don't have to put your script into /bin
. You can create directory ~/bin
and put your script there. Directory ~/bin
is included in $PATH
by default, so scripts put there can be run as any other shell command.
Solution 2:
I second the recommendation to use ~/bin
which gets automatically added to your $PATH
,as Sergey said. Or /usr/local/bin
, which may already be on the PATH
.
However:
- You are doing this for yourself. Use whatever you feel comfortable with. Indeed, I'd say keep the extension so that you'll be reminded it's your script you are running, since -
-
Extensions are uncommon in
/usr/bin
. In my system, I can find only two:$ dpkg -S `ls /usr/bin/*.sh` mtools: /usr/bin/amuFormat.sh gettext-base: /usr/bin/gettext.sh
So if you are packaging, definitely leave out the extension.
Solution 3:
Just put following line at top of file:
#!/bin/bash
So-that file will be automatically type : Shell Script without any extension!
Remember to give execution permission to file.
For putting script so-that can be run by direct command, visit: Where should I put my script so that I can run it by a direct command?