我正在尝试在我的计算机(Mac OS X 10.7.4)上设置 GNU Octave。我是终端使用新手,我需要帮助来理解以下脚本实际上的作用:
if [ -f ~/.bashrc ];then<br>
. ~/.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 来运行 Octave。我不需要 gnu plot 的别名。
谢谢
答案1
[ -f ]
测试文件是否存在。
波浪号~
是 shell 中主目录/用户目录的简写。您的个人文件存储在那里。~/.bashrc
如果存在 ,则是另一个bash
启动文件,位于您的主目录中,通常在您以交互方式启动时运行bash
(也就是说,当您不只是调用bash
来执行预先存在的bash
脚本文件时)。您正在查看的示例文件可能是一个.profile
,它是另一个 shell 启动脚本,通常只在您第一次登录系统时运行。如果您有只想在登录时运行的命令,可以将它们放入 中~/.profile
。如果您有设置交互式 shell 环境的命令(例如,使命令更容易调用的别名),那么您可以将它们放入 中.bashrc
。由于登录 shell 也是交互式 shell,因此您通常希望您的.profile
也加载(“源”)您的.bashrc
。
当您的 shell 查找要运行的命令时,它会查阅环境变量PATH
。此行将其导出,以便您从 shell 调用的其他命令知道在哪里可以找到其他命令。它还将目录添加到,/usr/local/bin
以便PATH
shell 及其运行的程序也在那里查找命令。
BASH_ENV
定义bash
在非登录、非交互情况下调用时应运行的启动脚本。我猜想它被导出,这样如果您调用非交互实例bash
(例如执行预先存在的脚本文件),它仍将运行您的.bashrc
。我通常不希望非交互 shell 运行我的.bashrc
,所以我永远不会定义BASH_ENV
您找到的此示例文件中定义的方式。
GNUTERM
被定义为字符串aqua
。它被同时定义和导出。由于您使用的是 Mac,可能没有安装 XWindows (X11),这会告诉您的 GNUTerm/GNUPlot/GNUOctave 环境运行什么工具来将您的图表绘制到屏幕上。可能水语,如果您还没有安装,您可能需要确保已经安装。我不了解 GNUOctave/GNUPlot/GNUterm/aquaterm 生态系统的整个 Mac 版本,所以我无法就具体细节向您提供建议。