如何在Ubuntu终端的任意工作目录中像内置命令一样调用自制C语言可执行程序
如何在Ubuntu终端的任意工作目录中像内置命令一样调用自制C语言可执行程序
嗨,我来帮你搞定这个问题!要让你的myprog像cat、grep这些系统内置命令一样,在任意目录下直接调用,核心就是利用系统的PATH环境变量——终端每次执行命令时,都会在PATH列出的目录里查找可执行文件。下面给你两种实用的方法,选哪种都可以:
方法一:把程序放到系统默认的自定义程序目录
这是最省心的方式,/usr/local/bin是系统专门留给用户放自定义程序的目录,默认已经在PATH里了:
- 先确保你的
myprog有可执行权限,如果还没有,执行:chmod +x myprog - 然后把程序复制到
/usr/local/bin(需要管理员权限):sudo cp myprog /usr/local/bin/ - 搞定!现在不管你在哪个目录,直接输入
myprog arg1 arg2就能运行程序了,重启终端也不会失效。
方法二:创建自己的程序目录并加入PATH
如果你不想动系统目录,想把自己的程序都集中放在一个专属目录里,可以这么做:
- 先在家目录创建一个专门的程序目录,比如
bin:mkdir ~/bin - 把你的
myprog移到这个目录,同时确保权限:mv myprog ~/bin/ chmod +x ~/bin/myprog - 接下来把这个目录加入
PATH,编辑bash的配置文件(比如~/.bashrc):nano ~/.bashrc - 在文件的末尾添加一行:
export PATH="$HOME/bin:$PATH" - 保存并退出nano(按
Ctrl+O回车保存,Ctrl+X退出),然后让配置立刻生效:source ~/.bashrc - 现在你也可以在任意目录直接输入
myprog arg1 arg2调用程序了,而且下次登录终端时这个配置会自动加载。
之前你用export设置环境变量的方法需要加$前缀,是因为你只是把程序路径存在了变量里,终端不会自动去搜索这个变量对应的路径;而上面两种方法都是把程序所在目录加入了PATH,终端会自动遍历这些目录找可执行文件,所以就不用额外加前缀啦。
备注:内容来源于stack exchange,提问作者Cinverse
相关产品推荐
相关产品推荐

