相关疑难解决方法(0)

shell脚本可以设置调用shell的环境变量吗?

我正在尝试编写一个shell脚本,在运行时,将设置一些将在调用者的shell中保留的环境变量.

setenv FOO foo
Run Code Online (Sandbox Code Playgroud)

在csh/tcsh中,或

export FOO=foo
Run Code Online (Sandbox Code Playgroud)

在sh/bash中只在脚本执行期间设置它.

我已经知道了

source myscript
Run Code Online (Sandbox Code Playgroud)

将运行脚本的命令而不是启动新的shell,这可能导致设置"调用者"环境.

但这里有一个问题:

我希望这个脚本可以从bash或csh调用.换句话说,我希望任何一个shell的用户都能够运行我的脚本并改变他们的shell环境.所以'source'对我来说不起作用,因为运行csh的用户无法获取bash脚本,而运行bash的用户无法获取csh脚本.

有没有合理的解决方案不需要在脚本上编写和维护两个版本?

bash shell csh tcsh

396
推荐指数
8
解决办法
46万
查看次数

如何编写bash脚本来设置全局环境变量?

最近我写了一个设置环境变量的脚本,看看:

#!/bin/bash

echo "Pass a path:"
read path
echo $path

defaultPath=/home/$(whoami)/Desktop

if [ -n "$path" ]; then
    export my_var=$path
else
    echo "Path is empty! Exporting default path ..."
    export my_var=$defaultPath
fi

echo "Exported path: $my_var"
Run Code Online (Sandbox Code Playgroud)

它工作得很好但问题是my_var只在本地可用,我的意思是在我运行脚本的控制台窗口中.

如何编写一个脚本,允许我导出可以随处看到的全局环境变量?

bash shell environment-variables

40
推荐指数
4
解决办法
8万
查看次数

标签 统计

bash ×2

shell ×2

csh ×1

environment-variables ×1

tcsh ×1