.bash_profile 中的別名不會反映在整個系統中

.bash_profile 中的別名不會反映在整個系統中

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

您對以下幾件事感到困惑:

  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]$
    
  2. 別名影響 shell,而不是其他東西。當makeeclipse等嘗試執行時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
    
  3. 大多數編譯的東西運行ccc++等等,而不是gcc。因此,即使您重寫了gcc,它也可能不起作用。

那麼,如何實現這一點呢?

最好的方法是告訴make等要使用哪個編譯器:

make CC=/path/to/myrtgcc target

/.configure您也可以在執行使用 autoconf 的程式時在環境中傳遞它。

第二種方法是建立名為gcccc等的簡單 shell 腳本(例如),~/bin並將其放在路徑的第一個位置。腳本看起來像這樣:

#!/bin/sh
exec /path/to/myrtgcc "$@"

你可以在你的 PATH 中使用類似的東西將它們放在第一位.bashrc

PATH="$HOME/bin:$PATH"
export PATH

答案2

閱讀你的 shell 文檔。有兩種類型的設定檔。 .bash_profile 在您已經登入並執行某些操作(例如開啟新終端)時執行。另一種類型的設定檔是在您最初登入系統時使用的,奇怪的是,它被稱為登入設定檔。為了做你想做的事,試著將你的東西放入 .profile 中

相關內容