-1

Я пытаюсь настроить GNU Octave на моем компьютере (Mac OS X 10.7.4). Я новичок в использовании терминала, и мне нужна помощь, чтобы понять, что на самом деле делает следующий скрипт:

if [ -f ~/.bashrc ];then<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;. ~/.bashrc<br>
fi<br>
PATH=$PATH:/usr/local/bin<br>
BASH_ENV=~/.bashrc<br>
export BASH_ENV PATH<br>
export GNUTERM=aqua<br>
alias octave="/Applications/Octave.app/Contents/Resources/bin/octave"<br>
alias gnuplot="/Applications/Gnuplot.app/Contents/Resources/bin/gnuplot"<br>

(взято отсюда: http://wikibox.stanford.edu/me112/index.php/Main/OctaveMatlabNotes)

Таким образом, этот скрипт начинается с простого условного оператора if. Я не понимаю условное выражение - что такое -f и .bashrc? Какое утверждение. ~/.bashrc на самом деле?

Затем определяются 2 переменные PATH и BASH_ENV. Почему они экспортируются? Почему GNUTERM = aqua экспортируется, даже если он нигде не определен?

Все, что мне нужно, это скрипт, который позволит мне запустить Octave, просто набрав в терминале октаву. Мне не нужен псевдоним для сюжета GNU.

Спасибо

1 ответ1

2

[ -f ] проверяет, существует ли файл.

Тильда ~ является сокращением оболочки для вашего домашнего / пользовательского каталога. Личные для вас файлы хранятся там. ~/.bashrc , если он существует, является другим файлом запуска bash в вашем домашнем каталоге, который обычно запускается, когда вы запускаете bash интерактивном режиме (то есть, когда вы не просто вызываете bash для выполнения уже существующего файла сценария bash ). Файл примера, который вы просматриваете, вероятно, должен быть .profile , который является еще одним сценарием запуска оболочки, который обычно запускается только при первом входе в систему. Если у вас есть команды, которые вы хотите запускать только при входе в систему, вы помещаете их в ~/.profile . Если у вас есть команды, которые настраивают вашу интерактивную оболочку (например, псевдонимы, упрощающие вызов команд), вы помещаете их в свой .bashrc . Поскольку оболочки входа в систему также являются интерактивными оболочками, вы обычно хотите, чтобы ваш .profile также загружал ("источник") ваш .bashrc .

Когда ваша оболочка ищет команды для запуска, она обращается к переменной окружения PATH . Эта строка экспортирует ее, чтобы другие команды, которые вы вызываете из оболочки, знали, где искать другие команды. Он также добавляет каталог /usr/local/bin в PATH так что оболочка и программы, которые она запускает, также ищут там команды.

BASH_ENV определяет, какой сценарий запуска bash должен запускаться, если он вызывается в неинтерактивной, не входящей в систему ситуации. Я предполагаю, что он экспортируется, так что если вы вызовете неинтерактивный экземпляр bash (например, для выполнения существующего файла сценария), он все равно будет запускать ваш .bashrc . Обычно я не хочу, чтобы неинтерактивные оболочки выполняли мой .bashrc , поэтому я никогда не определил бы BASH_ENV так, как это определено в этом примере файла, который вы нашли.

GNUTERM определяется как строка aqua . Он определяется и экспортируется одновременно. Поскольку вы работаете на Mac, на котором может не быть установлен XWindows (X11), это говорит вашей среде GNUTerm/GNUPlot/GNUOctave, какой инструмент запустить, чтобы нарисовать ваши графики на экране. Вероятно, aquaterm, который вы могли бы убедиться, что вы установили, если вы еще не сделали. Я не знаю обо всех вариантах Mac для экосистемы GNUOctave/GNUPlot/GNUterm/aquaterm, поэтому не могу посоветовать вам подробности.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .