当前位置: 首页 > 知识库问答 >
问题:

为什么导出变量而不是别名.bash_profile在非登录shell中工作?

宦兴朝
2023-03-14

我正在使用Fedora20图形桌面。我发现这个别名放在盒子里了。bash_档案没有效果。然后我发现图形终端不是一个登录shell,因此根本不读取bash_概要文件。

现在我觉得奇怪的是,export命令在中确实有效。bash_简介<我的。bash_简介如下:

#bash_profile    
export mytest=bash_profileIsRead
alias kk=ls

测试结果:

$ shopt login_shell
login_shell off
$ echo $mytest
bash_profileIsRead
$ kk
bash: kk: command not found...

共有2个答案

夹谷沛
2023-03-14

别名不像环境变量那样被继承。它们不应放置在纵断面中,而应放置在纵断面中。bashrc文件。

大体上profile(或.bash_profile)用于继承的内容(例如env变量),rc文件用于必须在非登录shell中重新初始化的内容,例如别名。

晋骏喆
2023-03-14

这没有什么不寻常或令人惊讶的。

您的。bash_profile由您的登录shell在每个会话中运行一次。它不会由稍后在会话中运行的其他shell运行。

。相比之下,bashrc由每个交互式shell实例运行,因此在整个会话中,放置在那里的别名和shell函数等内容都会得到尊重。

环境变量只需要设置一次,因为它们由子流程(每个子流程,而不仅仅是shell!)继承。别名不是继承的,因此需要在每个shell中设置别名。

有关更多信息,请参阅wooledge.orgwiki上的DotFiles页面(由irc.freenode.org的#bash频道维护)。

 类似资料:
  • 我正在尝试制作两个程序。我希望一个打印我居住的城市的当前天气,我希望另一个从一个在线帐户获取数据并返回它。对于这些脚本,我导入了天气模块和请求模块。当我在shell中导入它们时,没有问题,但是当我运行脚本时,它说“ImportError:No module name you weather”。我做错了什么? 壳牌: 脚本: 这也适用于“天气”模块 谢谢你

  • 我有一个需求,其中一个脚本需要执行,这需要设置一些环境变量。通常需要以下内容: 1)我登录到目标节点,例如使用'user1'并设置我的环境变量,例如tempdir=~/tmp;执行source~/.bashrc并注销。 我执行的文件脚本要求设置TEMPDIR。 上面的设置不起作用,因为bash shell不是在非交互式shell期间提供的(如果我的理解是正确的话)。为了克服这个问题,我尝试了以下在

  • 问题内容: Go中的类型定义为 的别名,在所有方面都等效。按照惯例,它用于区分字符值和整数值。 如果打算使用这种类型来表示字符值,为什么Go语言的作者不使用而不是?当值是负数时,他们如何期望在程序中处理该值?另一个类似的类型是(而不是)的别名,这似乎是合理的。 问题答案: 我用Google搜索并找到了这个 这已经被问过好几次了。符文占用4个字节,而不仅仅是一个字节,因为它应该存储unicode码点

  • 我想将我在行下面添加的环境变量设置为和,但它不起作用。

  • 为什么第一个和第二个写工作,但不是最后一个?有没有办法我可以允许所有3个,并检测它是1,(int)1还是i传入?为什么只允许一个,而允许最后一个?第二个被允许,但不是最后一个,真的让我大吃一惊。 演示显示编译错误

  • 我正在尝试执行GET命令,以便我可以从服务器获取数据。下面的Curl适用于Postman。 在运行我的代码时,我能够获取会话ID。下一步是获取数据。但是当我执行GET时,我没有得到任何响应。相反,我得到一个错误,如下所示:“指定的值具有无效的HTTP标头字符。(参数'name')” 下面是我试图执行的C代码 问题:我没有收到来自服务器的响应,响应长度为零。 以下是答案:0 回答ErrorMessa