重新启动后echo $SMARTY_DIR 没有结果

debian8 是一个普通账户.

debian8@hwy:~$ uname -a
Linux hwy 3.16.0-4-amd64 #1 SMP Debian 3.16.36-1+deb8u1 (2016-09-03) x86_64 GNU/Linux
debian8@hwy:~$ bash --version
GNU bash, version 4.3.30(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

我安装了Smarty到/usr/local/lib/Smarty/,于是写环境变量。

 vim /etc/profile
 export SMARTY_DIR=/usr/local/lib/Smarty/
 source /etc/profile

然后测试:

debian8@hwy:~$ echo $SMARTY_DIR
/usr/local/lib/Smarty/

现在关闭电脑,重新启动,进入普通账户debian8,再次输入

debian8@hwy:~$ echo $SMARTY_DIR 

没有任何输出?请问,如何解决这个问题,出现故障的原因在哪里?

阅读 2.4k
2 个回答

建议把

export SMARTY_DIR=/usr/local/lib/Smarty/

写进 ~/.bashrc

/etc/profile这个文件应该只影响sh,对bash的修改来自于/etc/bash.bashrc。你可以尝试一下修改/etc/bash.bashrc。不过修改~/.bashrc是更好的选择。

这个问题和login shell non-login shell有关,查看了英文资料。

http://unix.stackexchange.com...

prompt> echo $0
-bash # "-" is the first character. Therefore, this is a login shell.

prompt> echo $0
bash # "-" is NOT the first character. This is NOT a login shell.

A shell started in a new terminal in a GUI would be an interactive non-login shell. It would source your .bashrc, but not your .profile, for example.

我的问题,得到圆满解决。
应当将export SMARTY_DIR=/usr/local/lib/Smarty/写进 ~/.bashrc 或者/etc/bash.bashrc

当然,最妥善的解决办法:
将export SMARTY_DIR=/usr/local/lib/Smarty/写入/etc/profile (满足login shell);    
同时將export SMARTY_DIR=/usr/local/lib/Smarty/寫入/etc/bash.bashrc(满足non-login shell)

理由如上。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题