昨天搭建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...