как импортировать исходный файл библиотеки оболочки

#shell

#оболочка

Вопрос:

Вот инструмент «головной файл» моей личной оболочки.h

 #!/bin/echo Warnning! this libiary must be scourced in file!
#ostype(): define the system type in val OSTYPE
ostype(){
    osname=`uname -s`
echo $osname
}
ostype
 

Когда я вызываю его напрямую, как ./tool.h он печатает первую строку, которая после «#!/bin/echo»

И вот мой вопрос: как я могу вызвать эту функцию «ostype» в «tool.h’ другим файлом сценария оболочки с его первой строкой #!/bin/bash ?

Я не знаю, как импортировать «головной файл», точно так же, как импортировать плагин Jquery в Javascript.

 <script type="text/javascript" src="js/jquery-1.6.2.min.js"></script>
 

Комментарии:

1. Не используйте суффикс .h для файла сценария оболочки; .h используется для заголовков C и C . Используйте .sh .

2. Вы действительно не должны называть свой файл tool.h , поскольку он не является заголовочным файлом C / C .

3. Почему вы используете #!/bin/echo for the shebang? #!/bin/sh было бы более разумно.

4. используя #!/bin/echo.for я не хочу вызывать этот исходный файл напрямую.

Ответ №1:

Вы можете source это сделать (предположим, что это находится в другом файле в том же каталоге):

 source tool.h
 

Ответ №2:

Вы не должны использовать .h в качестве суффикса и, вероятно, должны использовать .sh (или, возможно .csh , если вы используете производную от оболочки C).

В зависимости от вашей оболочки, вы можете использовать команду ‘dot’ (POSIX, Bourne, Korn, Bash) или source команду (C Shell, Bash):

 . tool.sh

source tool.sh
 

Оба они считывают скрипт (после поиска его с помощью поиска, подобного ПУТИ, если в имени нет косой черты) как часть текущей среды оболочки (в отличие от запуска его во вложенной оболочке). Это означает, что изменения, внесенные пунктирным скриптом, вступают в силу в вызывающей оболочке, что важно при определении функций.