.profile中EXPORT变量的问题

简介: 昨天搭建Tuxedo环境时碰到一个问题,涉及到不同shell环境下变量的写法。问题背景:操作系统版本是SunOS e2900i-t 5.9 Generic_122300-12 sun4u sparc SUNW,Netra-T12创建用户后,向.profile中添加环境变量:#for Tuxedoexport TUX_HOME=/opt/app/tux;...重登陆时就报:-sh export TUX_HOME=/opt/app/tux: is not an identifier这样的错误。

昨天搭建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也可以。

目录
相关文章
|
4月前
|
Shell Linux
bashrc和profile区别
bashrc和profile区别
30 1
|
5月前
|
Java Maven 数据库
|
Shell
Shell export 定义全局变量(变量的作用范围)
Shell export 定义全局变量(变量的作用范围)
260 0
|
JavaScript API
export导出的是变量!!!是变量!!!
export导出的是变量!!!是变量!!!
156 0
|
Java Shell Linux
解决shell脚本中"source /etc/profile"重载配置文件不生效的问题
1、shell脚本中“source /etc/profile”无法生效的原因及解决办法;2、shell中"."、"source"、"sh"、"./"的区别;
解决shell脚本中"source /etc/profile"重载配置文件不生效的问题
|
Shell Linux 开发工具
Shell变量、系统预定义变量$HOME、$PWD、$SHELL、$USER、自定义变量、特殊变量$n、$#、$*、$@、$?、env看所有的全局变量值、set看所有变量
Shell变量、系统预定义变量$HOME、$PWD、$SHELL、$USER、自定义变量、特殊变量$n、$#、$*、$@、$?、env看所有的全局变量值、set看所有变量
Shell变量、系统预定义变量$HOME、$PWD、$SHELL、$USER、自定义变量、特殊变量$n、$#、$*、$@、$?、env看所有的全局变量值、set看所有变量
|
JavaScript 前端开发 开发者
export default 和 export 的使用方式| 学习笔记
快速学习export default 和 export 的使用方式
|
SQL Perl
profile
SQL> declare 2 v_hints sys.sqlprof_attr; 3 begin 4 v_hints:=sys.sqlprof_attr('full(test)'); 5 dbms_sqltune.
1244 0
|
Shell Linux
/etc/profile和~/.bash_profile的区别与联系
/etc/profile 为系统的每个用户设置环境信息和启动程序,当用户第一次登录时,该文件被执行,其配置对所有登录的用户都有效。当被修改时,必须重启才会生效。
3480 0
|
Shell Unix