我有一个应该很简单的问题,但我无法在任何地方找到解决方案。
我正在尝试做一些像在 bash 脚本中设置和环境变量一样简单的事情。 从 bash 终端运行脚本它工作正常,但是从 tcsh 运行它,这是我正在使用的机器上的默认设置,当我尝试导出我的变量时,我得到了未知的命令。
这是我的非常简单的脚本。我的_tmp_script.sh
#!/bin/bash
#clear
echo $$
echo "setting environment variables"
MY_TEMP_ENVVAR=123@tmp.com
export MY_TEMP_ENVVAR
echo $MY_TEMP_ENVVAR
如果我获取这个我得到
source my_tmp_script.sh
8790
setting environment variables
MY_TEMP_ENVVAR=123@tmp.com: Command not found.
export: Command not found.
如果我改用 bash shell,它工作得很好。
我错过了什么?
谢谢
最佳答案
获取脚本意味着当前 shell 进程执行脚本命令,而执行脚本时 shell 会生成一个新进程并等待它完成(除非在后台启动 &)以获取退出状态($?)。
兴趣是修改当前的 shell 设置,这不能通过执行脚本来完成。
使用 tcsh shell 获取 bash 脚本是无稽之谈,因为它们是不同的语言,bash 设置可能对 tcsh shell 没有用。
错误提示tcsh无法定义和导出环境变量
用庆典
MY_TEMP_ENVVAR=123@tmp.com
export MY_TEMP_ENVVAR
用 tcsh
setenv MY_TEMP_ENVVAR=123@tmp.com
如果可能,另一个解决方案是更改默认 shell 或在登录时启动 bash,shebang (!#/bin/bash) 在获取脚本文件时无效。
关于linux - 从 cshell (tcsh) 执行 bash shell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43388956/