profile中EXPORT變數的問題

2021-12-30 13:10:08 字數 1421 閱讀 7579

昨天搭建tuxedo環境時碰到乙個問題,涉及到不同shell環境下變數的寫法。

問題背景

作業系統版本是sunos e2900i-t 5.9 generic_122300-12 sun4u sparc sunw,netra-t12

建立使用者後,向.profile中新增環境變數:

#for tuxedo

export tux_home=/opt/app/tux;

重登陸時就報:

-sh export tux_home=/opt/app/tux: is not an identifier

這樣的錯誤。

有的帖子說:

1. .profile中"/bin/sh"修改為"/bin/ksh"即可,嘗試後失敗。

2. 將export tux_home=/opt/app/tux;分為兩行匯出,即:

tux_home=/opt/app/tux;

export tux_home;

這樣可以正常。

問題解決

既然上述2中的方法可以執行,說明可能還是因為不同的shell環境對於匯出環境變數的語法要求不同。

1. 通過比對不同shell對匯出環境變數的寫法,發現export tux_home=/opt/app/tux;當使用了bash的時候就正常,說明他是bash要求的格式。

2. 檢查本機使用者預設的shell:可以查詢/etc/passwd檔案。

tux:x:100059:1::/userhome/tux:/bin/sh

發現預設使用的是sh,將其改為bash,

3. 使用usermod -s /bin/bash tux命令,完成預設shell的修改。

再次登入,問題解決。

知識點1

useradd/usermod的引數含義:-c comment 指定一段注釋性描述。

-d 目錄 指定使用者主目錄,如果此目錄不存在,則同時使用-m選項,可以建立主目錄。

-g 使用者組 指定使用者所屬的使用者組。

-g 使用者組,使用者組 指定使用者所屬的附加組。

-s shell檔案 指定使用者的登入shell。

-u 使用者號 指定使用者的使用者號,如果同時有-o選項,則可以重複使用其他使用者的標識號。

知識點2

使用bash時通常看需要使用的是.bash_profile這個使用者檔案,但這裡用的是.profile。

"在剛登入linux時,首先啟動 /etc/profile 檔案,然後再啟動使用者目錄下的 ~/.bash_profile、 ~/.bash_login或 ~/.profile檔案中的其中乙個,執行的順序為:~/.bash_profile、 ~/.bash_login、 ~/.profile"

因此這裡我用的是.profile也可以。

C C 中export的定義

windows下的dll linux下的庫或是c 中呼叫c的庫,均可能用到import export。本文討論一種通用的import export巨集定義的使用實踐。如下所示,common.h 定義了可以跨平台的import export巨集定義,something.h 定義了某個類標頭檔案的imp...

Linux中的export用法

exports是設定nfs共享檔案的 linux export命令 功能說明 設定或顯示環境變數。語 法 export fnp 變數名稱 變數設定值 補充說明 在shell中執行程式時,shell會提供一組環境變數。export可新增,修改或刪除環境變數,供後續執行的程式使用。export的效力僅及...

理解make中的export

home student makefile a shell pwd export a all echo a make c tt home student tt makefile b shell pwd all echo a echo b 在 home student下make 結果是什麼呢?home...