Yahoo奇摩知識+ 將於 2021 年 5 月 4 日 (美國東部時間) 終止服務。自 2021 年 4 月 20 日 (美國東部時間) 起,Yahoo奇摩知識+ 網站將會轉為唯讀模式。其他 Yahoo奇摩產品與服務或您的 Yahoo奇摩帳號都不會受影響。如需關於 Yahoo奇摩知識+ 停止服務以及下載您個人資料的資訊,請參閱說明網頁。

小梁 發問時間: 電腦與網際網路軟體 · 10 年前

Linux 環境變數立即生效

Dear All

請教一下

我如何使設定的環境變數立即生效

使用 source 或 export

只會在當下的 shell 有用而已

當我開啟另一個 shell 則一樣是無效的

已更新項目:

我是希望 不需要 登出再登入

就可以使環境變數生效

比如:在 視窗 1 改變 變數 y

開啟新視窗後 (或在現存的其它視窗) echo $y 便可看到生效的值

2 個已更新項目:

Hi 小紫大大

如果要 restart $HOME/.bash_profile ??

(作業過程中 修改 .bash_profile 的 變數,並且不需重新登入 就使新變數生效)

我執行 which restart , 系統並無 restart

且在 /etc/init.d 下並無appache2

抱歉,我的道行太淺,有點看不懂你的用法

5 個解答

評分
  • 其威
    Lv 7
    10 年前
    最佳解答

    環境變數只影響自己跟自己下面的 child process,沒辦法影響 parent 或 sibling。

    這是一個安全機制,為了避免有程式透過更改別人的環境變數來搞破壞或入侵。

    所以,例如你開兩個終端機,他們可能有同一個 parent process,也就是說他們是「兄弟姊妹」。

    例如這樣:

    - terminal-emulator

    - shell (1)

    - shell (2)

    - shell (3)

    你在 shell (1) 裡面改掉一個環境變數,沒有任何辦法可以影響 shell (2)、shell (3)、與 terminal-emulator,更別說 terminal-emulator 上面的了。

    如果你改了 .bash_profile,又不想登出登入,可以直接 source 他:

    $ source ~/.bash_profile

    如果你懶的打 source 這麼長,可以用 . 代替:

    $ . ~/.bash_profile

    注意 . 與 ~ 之間有一個空格。

    === 分隔線 ===

    `restart` 這個指令是用來將電腦重新開機的,需要 super user 權限。

    `which` 這指令只是用來看看 PATH 或 built-in 的指令裡面有沒有你要的這個執行檔。

    所以他並不會執行 restart。

    /etc/init.d 底下沒有 apache2,可能是你沒有安裝他。

    請呼叫你使用的發行版的套件管理員來安裝 apache2。

  • 7 年前

    到下面的網址看看吧

    ▶▶http://qoozoo09260.pixnet.net/blog

  • 10 年前

    請編輯 .profile 檔案, 在此批次檔中設定環境變數

    如何利用 仿unix命令 sed 一次替換文字中的 "某些相似性的字串"

  • 10 年前

    看你要重新啟動的service是什麼,假設是appache,你在terminal裡面打

    rcappache2 restart

    或者

    /etc/init.d/appache2 restart

    試試看,有問題在補充發問

  • 您覺得這個回答如何?您可以登入為回答投票。
  • 10 年前

    你想做的東西是什麼

    可不可以說清楚一點?

    我有一點想法

    但不確定大大只的東西和我想的一不一樣

    2011-08-09 16:53:42 補充:

    印象中修改~/.xprofile還是要重新登入

    問一下重新執行桌面環境算嗎?

    如果是Gnome的話,Alt+F2按r然後執行

    如果是Openbox的話就

    $ openbox --reconfigure

還有問題?馬上發問,尋求解答。