linux - 从 cshell (tcsh) 执行 bash shell

标签 linux bash shell tcsh

我有一个应该很简单的问题,但我无法在任何地方找到解决方案。

我正在尝试做一些像在 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/

相关文章:

linux - hping3 永远不会结束,即使有包号选项

PHP open_basedir 在 Apache 中损坏但在运行时在 PHP 中工作

bash - 与 'rm: missing operand' 命令一起使用时出现错误 'find'

bash - 用 tr 去除反斜杠

java - ubuntu shell脚本重启jar

ruby-on-rails - 我在 Ubuntu 服务器上设置的 Ruby on Rails 环境变量未被读取

linux - 在 Linux 机器上查找两个日期之间修改的文件

macos - 用于打印当前正在运行的所有应用程序的 Bash 命令

bash - 获取数组中基于子字符串的唯一文件名列表

javascript - 有没有我可以练习 javascript 的程序/shell?