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