如何在unix中从不同的目录运行程序

如何在unix中从不同的目录运行程序

我知道这是一个非常简单的问题,而且已经问过很多类似的(但更复杂!)问题了——所以我想以一种非常直接的方式提出这个问题。如果这违反了本网站的行为准则,我很抱歉!我刚开始使用 unix。

我有一个程序可以将“.evt”文件转换为 .rq1,用于数据分析。执行此操作的命令很简单,例如:转换 data.evt(输出 data.rq1)。

假设该程序位于目录 /A 中,而我有一个要在目录 /B 中转换的数据文件。如何在不将转换程序移至目录 B 的情况下执行该程序?

答案1

这很简单:

./A/Convert B/some_file  

意思是进入目录A,用你给出的参数运行该程序。

答案2

在 UNIX 文件系统中,所有内置命令都是为执行某些任务而编写的二进制文件(程序)。ls命令列出目录,mv命令移动或重命名文件等。

所有这些二进制文件都存储在您的/usr/bin目录中。并且该目录的路径存储在您的 PATH 环境变量中。

如果您有许多执行某些任务的脚本,我建议将它们移动到一个文件夹中。举个例子,/yourname/scripts然后在您的 PATH 变量中设置此路径。

PATH 变量可以在 .bashrc 或 .bash_profile 文件中设置,该文件会在您启动终端会话时加载。您可以通过执行echo以下命令来查看 PATH 变量设置。

[jaypal~]$ echo $PATH /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/usr/local/git/bin:/usr/local/mysql/bin:/Developer/usr/bin:/usr/local/ActivePerl-5.12/bin:/Library/Ruby/Site/1.8/rubygems:/Library/Ruby/Gems/1.8/gems/wkpdf-0.5.3-universal-darwin/bin:/Library/Ruby/Gems/1.8/gems/wkpdf-0.5.3-universal-darwin/lib

在您的 .profile 文件中,只需添加:/yourname/scripts文件夹并. .profile在 shell 提示符下执行即可。这将强制您当前的会话加载您的配置文件,而无需退出并再次登录。

一旦 .profile 文件被加载,您就可以scriptname根据需要通过简单地键入选项或其他参数从任何地方运行脚本。

教程将会对你有帮助。

答案3

大多数有经验的 unix 用户(系统未提供)使用的一个惯例是在用户的主目录中创建一个本地 bin 目录,作为用户创建的脚本和程序的存储库。(摘自这里

将程序放在~/bin目录(是的缩写/home/yourname/bin)中,您将能够从任何位置运行程序,因为当~/bin存在时,bash 默认将其添加到PATH(至少在 Ubuntu 上)。如果不存在此目录,则需要创建它。

如果你想成为更高级的 Linux 用户 - 使用ln -s将你的程序从其位置链接到~/bin

答案4

像这样运行它:

/A/Convert /B/data.evt

请记住不要在 /A 前面加上.as,表示当前目录。除非您提供的路径是相对于当前目录的。

相关内容