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

 霦槟哊禮kc 发布于 2022-11-01 06:33

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 个回答
  • 这个问题和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)
    

    理由如上。

    2022-11-12 01:43 回答
  • 建议把

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

    写进 ~/.bashrc

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

    2022-11-12 01:43 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有