从另一个目录运行C程序(别名或函数?)

时间:2016-05-17 03:03:07

标签: bash alias

我有一个应该在任何目录中执行的程序。

例如: 我已编译的c程序位于“/ Desktop / Folder1 /”目录中,并命名为“program”。 我现在所在的目录(在终端中)是“/ Desktop / Folder2 / another /”。在这个文件夹里面是一个“file.txt”。 我想做的就是做点什么 “myProgram zip file.txt”,这将压缩该文件。

我四处搜索并发现了别名和bash函数...据我所知,我无法将参数传递给别名,所以我尝试使用bash函数:

myProgram() { /Desktop/Folder1/program "$1" "$2" ; }

但是,只有当前目录是我的c程序目录时,这才有效。

我是否完全错了,功能不像这样? 还有另一种方法可以做我想要的吗?

如果我不清楚请告诉我,因为英语不是我的母语。 谢谢。

2 个答案:

答案 0 :(得分:0)

  

我有一个应该在任何目录中执行的程序。

方法1

通常~/.bashrc修改您的bash个人资料文件,添加:

export PATH=$PATH:/path/to/your/command

但是,这样做有一个缺点,就是您的路径中的其他二进制文件也很容易访问,这可能是不可取的。

<强>方法2

cp -n your_command_name /usr/local/bin/
#-n option is  not to  overwrite  an  existing  file  

注意:

  1. 我建议使用像paco这样的包管理器来管理本地编译的程序。

  2. 请参阅下面的讨论,了解存储本地编译二进制文件的好地方。

答案 1 :(得分:0)

你说这一切都错了。相反,花点时间了解其他程序是如何做到的。了解ggplot(data=df,aes(x=numb)) + geom_bar(stat="identity", aes(y=mydist, fill="green"), colour="green") + geom_line(aes(y=basedist,group=1, colour="base distribution")) + geom_point(aes(y=basedist), colour="red") + ggtitle("My Chart") + labs(x="numb", y="percentage") + scale_x_discrete(limits=c("1","2","3","4","5","6","7","8","9")) + scale_y_continuous(breaks=seq(0,100,10)) + scale_fill_manual(values = "green", labels = "my distribution") + theme(axis.title.x = element_text(size=10, colour ="#666666")) + theme(axis.title.y = element_text(size=10, color="#666666")) + theme(plot.title = element_text(size=16, face="bold", hjust=0, color="#666666")) + theme(axis.text = element_text(size=12)) + theme(legend.title = element_text(colour="white", size = 16, face='bold')) 环境变量。

所有现代操作系统(是的,包括Windows)都有$PATH环境变量的概念。此变量包含安装可执行文件(包括二进制文件和脚本)的所有目录的列表。

传统解决方案

传统上,unix系统在许多用户之间共享。你现在仍然会在sysadmin,db admin和开发人员都拥有自己的登录服务器的服务器中看到这一点(他们并不都以root身份登录对吧?对吗?)。因此,通常如果您编写自己的脚本或程序,通常无法在PATH/bin/usr/bin等常用位置安装软件。

幸运的是,每个用户都可以修改自己的/usr/local/bin变量,以便他们可以将自己的PATH文件夹添加到bin变量中。

传统上,解决方案是在您的主目录中创建一个PATH文件夹(您可以将其命名为任何名称,有些人喜欢bin,但传统上它是programs因为所有标准文件夹是bin):

bin

然后将文件夹添加到mkdir ~/bin 变量:

PATH

有时export PATH="$PATH:~/bin" 扩展不起作用,因此有时您可能需要使用主目录的完整路径:

~

要对export PATH="$PATH:/home/ohiohi/bin" 永久修改,请将其添加到$PATH.profile

现在,您可以将撰写的程序复制到.bashrc,以便随时随地使用

~/bin

现在你可以输入:

cp /Desktop/Folder1/program ~/bin

传统解决方案的优势

传统上,您拥有的所有内容都只能保存在您的主目录中。这包括个人脚本,可执行文件等。这样做的好处是,如果您升级到新PC或基于unix的新操作系统,您只需要复制主目录,然后继续使用您已经习惯的操作。

我个人一直在从1997年开始学习这个当前的主页目录。它从Linux PPC开始然后转移到Red Hat Linux然后转移到Windows95,Windows98,Windows2000,WindowsNT上的Cygwin然后再转移到Red Hat Linux然后是Centos,Ubuntu,Linux Mint,它目前驻留在Mac上。

如果转移到不兼容的平台,显然二进制可执行文件将不起作用。这解释了为什么许多unix用户倾向于喜欢脚本语言。但是你总是可以重新编译。