我在 .bash_profile 中几乎没有路径设置和别名,我正在导出它们。
例如:
alias gcc=/abc/def/......./myrtgcc
export gcc
我想用米尔特海湾合作委员会使用以下命令从终端或 Eclipse 编译 C 程序gcc
;我希望系统能够运行myrtgcc somfile.c -o output
。
然而,这种情况并非如此。即使在添加上述别名.bash_profile
并重新启动系统(或使用source .bash_profile
)后,更改也不会反映出来:如果我打开终端并键入which gcc
,我会得到/usr/bin/gcc
,当 eclipse 使用“GCC”命令时,它会再次调用相同的命令/usr/bin/gcc
。
我该如何制作米尔特海湾合作委员会系统默认,用于命令海湾合作委员会
答案1
您对以下几件事感到困惑:
which
不反映别名。因此,当您尝试检查是否已创建别名时,使用which
不会对您有帮助。alias
改为不带参数运行;它将显示所有有效的别名。例子:anthony@Zia:~$ foo bash: foo: command not found anthony@Zia:~ [$?=127]$ alias foo='echo hi' anthony@Zia:~$ foo hi anthony@Zia:~$ which foo anthony@Zia:~ [$?=1]$
别名影响 shell,而不是其他东西。当
make
、eclipse
等尝试运行时gcc
,shell 别名并不重要。您也只能导出变量,而不能导出别名。下面是一个 perl 尝试运行它的示例(同样使用 foo 别名):anthony@Zia:~$ perl -Mautodie=system -E 'system("foo")' "foo" failed to start: "No such file or directory" at (eval 6) line 12. at -e line 1
大多数编译的东西运行
cc
,c++
等等,而不是gcc
。因此,即使您重写了gcc
,它也可能不起作用。
那么,如何实现这一点呢?
最好的方法是告诉make
等使用哪个编译器:
make CC=/path/to/myrtgcc target
/.configure
您还可以在运行使用 autoconf 的程序时在环境中传递它。
第二种方法是创建名为gcc
、cc
等的简单 shell 脚本(例如),~/bin
并将其放在路径的第一个位置。脚本看起来像这样:
#!/bin/sh
exec /path/to/myrtgcc "$@"
你可以在你的 PATH 中使用类似的东西将它们放在第一位.bashrc
:
PATH="$HOME/bin:$PATH"
export PATH
答案2
阅读你的 shell 文档。有两种类型的配置文件。 .bash_profile 在您已经登录并执行某些操作(例如打开新终端)时执行。另一种类型的配置文件是在您最初登录系统时使用的,奇怪的是,它被称为登录配置文件。为了做你想做的事,尝试将你的东西放入 .profile 中