
我在 .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 中