我正在寻找“。”之间的区别。和“源”内置命令和一些源(例如,在本讨论中,以及bash 手册页)表明它们是相同的。
但是,由于环境变量的问题,我进行了测试。我创建了一个testenv.sh包含以下内容的文件:
#!/bin/bash
echo $MY_VAR
Run Code Online (Sandbox Code Playgroud)
在命令提示符下,我执行了以下操作:
> chmod +x testenv.sh
> MY_VAR=12345
> ./testenv.sh
> source testenv.sh
12345
> MY_VAR=12345 ./testenv.sh
12345
Run Code Online (Sandbox Code Playgroud)
[注意第一种形式返回一个空字符串]
所以,这个小实验表明,有是毕竟有差别,其中的“源”命令,孩子的环境继承所有从父之一,这里的变量“” 它不是。
我是否遗漏了什么,或者这是bash的未记录/不推荐使用的功能?
[GNU bash,版本 4.1.5(1)-release (x86_64-pc-linux-gnu)]
我看到一篇关于修复你的别名的帖子.bashrc。
他说在你把你的别名放进去后.bashrc,你需要使用:
. ~/.bashrc
Run Code Online (Sandbox Code Playgroud)
我不太明白第一个点(' . ') 在这里做什么。它的功能是什么,叫什么名字?
我已经准备好了别名.bash_aliases。
我现在遇到的问题是我需要先运行source ~/.<filename>才能执行别名命令。
我的问题是如何source ~/.<filename>在用户打开终端时运行。
一个用户 crontab 条目,内容如下:
0 */4 * * * $HOME/postscript/fprogcache-sync
Run Code Online (Sandbox Code Playgroud)
工作正常。想在 cron-job 上下文中添加一些环境变量,然后我尝试
0 */4 * * * source $HOME/.profile; $HOME/postscript/fprogcache-sync
Run Code Online (Sandbox Code Playgroud)
直到我更改source为.. 错误消息(通过 postfix 邮件发送到 root)是/bin/sh: 1: source: not found,然后确认脚本继续愉快地执行。
我记得曾在某处阅读过在 bash shell中source被定义为内置函数的别名的地方.。如果是这样,它将解释为什么source在 cron 上下文中不被识别。
是这样吗?如果是这样,.定义的系统范围别名在哪里?
该命令. .bash_profile用于重新加载(?)bash_profile。第一个的一般目的是.什么?如何使用它以及是否有资源可以阅读有关终端的这些类型符号的信息?