相关疑难解决方法(0)

如何在 shell 脚本中“导出”环境变量?

我有多个 Amazon EC2 账户,并希望能够$EC2_HOME使用脚本快速切换变量,例如。

我有一个如下设置的shell脚本:

#!/bin/sh
export EC2_HOME=/home/me/.ec2
echo $EC2_HOME
Run Code Online (Sandbox Code Playgroud)

当我运行脚本时,我知道EC2_HOME已设置,但我认为使用export会使变量在脚本完成后继续存在。它没有,因为运行echo $EC_HOME不会显示任何内容。

我知道这一定是非常初级的 Linux 脚本知识,但我不知道。我试图在没有运气的情况下寻找相关问题 - 如果这是重复的,我深表歉意。

shell bash shell-script environment-variables

80
推荐指数
2
解决办法
12万
查看次数

如何在 zsh 中动态声明一些别名?

我想声明一些快捷命令来在我的各种编码项目之间切换,所以我想出了以下脚本。

projects=$(ls -d ~/Workspace/*/)
prefix="/Users/myuser/Workspace/"
for f in $projects
do
        temp=${f#$prefix}
        temp=${temp/%\//}
        c="alias $temp='cd $f'"
        echo $c
        eval $c
done
Run Code Online (Sandbox Code Playgroud)

我把它放在我的主文件夹中一个名为的文件.workspace-shotcuts.sh中,然后我chmod +X .workspace-shotcuts.sh它。当我运行它时,使用./.workspace-shotcuts.sh我得到

alias project1='cd /Users/myuser/Workspace/project1/'
alias project2='cd /Users/myuser/Workspace/project2/'
Run Code Online (Sandbox Code Playgroud)

在控制台中。但是别名没有声明(zsh: command not found: project1)。

同样在我的.zshrc文件末尾,我添加了/bin/sh .workspace-shotcuts.sh,它提供了相同的输出,但仍然没有别名。

任何人都可以告诉我我缺少什么?我想指出的是,我不是一个出色的 *nix 用户,因此您可能需要对我进行一些 ELI5 操作。

编辑:

有人建议我source改用,我已经这样做了,但这是我收到的错误消息:

(eval):2: permission denied: /Users/myuser/Workspace/project1/
(eval):3: permission denied: /Users/myuser/Workspace/project2/    
(eval):4: permission denied: /Users/myuser/Workspace/project3/
(eval):5: permission denied: /Users/myuser/Workspace/project4/
(eval):6: permission denied: /Users/myuser/Workspace/project5/
(eval):7: permission denied: …
Run Code Online (Sandbox Code Playgroud)

zsh alias cd-command quoting

3
推荐指数
1
解决办法
2053
查看次数