Я использую rhel 5. Я изучаю сценарии оболочки. Я создал функцию с именем
vi / etc / bashrc (чтобы я мог использовать эту функцию даже после выхода из системы)
currenttime()
{
echo -e "Current time is `date`";
echo -e "Calendar Of this month is `cal`";
echo -e "Good Bye Mr.$USER ..Have good day";
}
Теперь, если я использую эту функцию как обычно, проблем нет. Но когда я использую эту функцию в файле сценария и пытаюсь выполнить этот сценарий. Теперь он показывает ошибку currenttime
команда не найдена
Vi my_script
currenttime
chmod +x my_script
sh my_script
currenttime command not found.
Теперь я не могу понять, нормально ли работает currenttime, например #currenttime
----- работает нормально
Но если я использую его в файле, он показывает ошибку. Вы можете объяснить логику этого?
Вы должны загрузить /etc/bashrc
в вашем пользовательском скрипте, поскольку этот файл и ~/.bashrc
загружается только для интерактивных оболочек.
#!/bin/bash
source /etc/bashrc
currenttime
@выше
Вы правы, сэр ... у меня есть еще немного экспликации. Это как
Вы можете использовать свою функцию, когда используете интерактивную оболочку (например, когда вы работаете с CLI). Это потому, что / etc / bashrc он загружается всеми интерактивными оболочками при запуске (если, конечно, ваш дистрибутив был настроен таким образом).
Но вы не можете использовать ту же функцию в своих скриптах. И это потому, что ваши скрипты ничего не знают о вашей функции. / etc / bashrc он используется только для интерактивных оболочек, а не для неинтерактивных оболочек (т.е. подоболочек, порожденных для выполнения сценария).
Вы должны создать / etc / bashrc вручную, или включить код функции в свои сценарии, или записать код функции в другом сценарии, который впоследствии может быть получен из других сценариев.