How to make a file into a shell script and run it?

2019-09-18 09:35发布

I created the file:

tinymce_compressor.sh
$chmod +x tinymce_compressor.sh
$ tinymce_compressor
-bash: tinymce_compressor: command not found

How can I run this shell script in terminal?

Here's the full script:

#!/bin/sh
# Tinymce compressor shell script
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
# 
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#        
# (C) Copyright 2010 Gabor Vitez
#
#
# Concatenates the tinymce components into a single static file
# Can be used with any web server which can serve static files
# Note you have to re-run this script every time you upgrade tinymce, 
# or change the required modules
#
# Usage: upon every invocation, the scipt will create a new 
# "tinymceappended.js" file, which contains the requested components
#
# In your html pages you have to change 
#
# <script type="text/javascript" src="<your installation path>/tiny_mce/tiny_mce.js"></script>
#
# to
#
# <script type="text/javascript" src="<your compressed tinymce url>/tinymceappended.js"> </script>
#


#config section
#where does tinymce live in the filesystem?
BASE="/Users/xxxx/Sites/cline/public/javascripts/tiny_mce/"
#under which URLs do the original tinymce components show up?
URLBASE="/tinymce"
#just as in the javascript config section
THEMES="advanced"
PLUGINS="safari spellchecker pagebreak style layer save advhr advimage advlink emotions iespell inlinepopups insertdatetime preview media searchreplace contextmenu paste directionality fullscreen noneditable visualchars nonbreaking xhtmlxtras"
LANGUAGES="en"
#end config section

(
LOADED=""
cd $BASE || exit 1
#cat tiny_mce.js
sed "s/tinymce._init();/tinymce.baseURL='\/tinymce';tinymce._init();/"<tiny_mce.js
#echo "tinyMCE_GZ.start();"
#cat tiny_mce_popup.js && LOADED="$LOADED $URLBASE/tiny_mce_popup.js"
for lang in $LANGUAGES
        do
                cat langs/$lang.js && LOADED="$LOADED $URLBASE/langs/$lang.js"
        done
for theme in $THEMES
        do
                cat themes/$theme/editor_template.js && LOADED="$LOADED $URLBASE/themes/$theme/editor_template.js"
                for lang in $LANGUAGES
                        do
                                cat themes/$theme/langs/$lang.js && LOADED="$LOADED $URLBASE/themes/$theme/langs/$lang.js"
                        done

        done

for plugin in $PLUGINS
        do
                cat plugins/$plugin/editor_plugin.js && LOADED="$LOADED $URLBASE/plugins/$plugin/editor_plugin.js"
                for lang in $LANGUAGES
                        do
                                cat  plugins/$plugin/langs/$lang.js && LOADED="$LOADED $URLBASE/plugins/$plugin/langs/$lang.js"
                        done

        done
echo
#echo $LOADED >&2
for i in $LOADED
        do
                echo "tinymce.ScriptLoader.markDone(tinyMCE.baseURI.toAbsolute(\"$i\"));"
        done
#echo "tinyMCE_GZ.end();"
) >tinymceappended.js

Thanks

标签: shell
3条回答
我命由我不由天
2楼-- · 2019-09-18 10:08

The script is in your current directory, but which is not in your path (which is what the shell uses to try and find commands to run) by default. So,

./tinymce_compressor.sh

should do the trick. For more information on the command search path, and why it may not be a good idea to include the current directory (aka ".") in the path, see "What's wrong with having '.' in your $PATH ? " from the Unix frequently asked questions list..

查看更多
祖国的老花朵
3楼-- · 2019-09-18 10:16

By default the current directory isn't on the path; you need to specify that the script is in the current folder (.):

./tinymce_compressor.sh
查看更多
对你真心纯属浪费
4楼-- · 2019-09-18 10:18

You have made it, just call

$ ./tinymce_compressor.sh

It seems that you come from Windows, where executables can be called without extensions and the current directory is always in PATH.

查看更多
登录 后发表回答