从 cshell (tcsh) 执行 bash shell
executing bash shell from cshell (tcsh)
我有一个应该很简单的问题,但我找不到任何解决方案。
我正在尝试在 bash 脚本中做一些简单的设置和环境变量。
运行 来自 bash 终端的脚本工作正常,但是 运行 它来自 tcsh,这是我使用的机器上的默认设置 当我尝试导出我的变量时,我得到了未知的命令。
这是我的非常简单的脚本。 my_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,它工作正常。
我错过了什么?
谢谢
bash 和 tcsh 中的变量语法不同。
在 tcs 中:
set var=val
在bash中:
var=val
source 只是在您的 shell 脚本中加载 shell 脚本,因此预期的语法是调用者 shell 脚本之一。
当您 source
您的脚本时,您当前的 shell 会执行它,而初始的 shebang 将被忽略。由于您当前的 shell 是 tcsh
,它需要 tcsh 语法。如果你想让bash
执行你的脚本,你应该用像chmod a+x my_tmp_script.sh
这样的命令使它可执行,然后直接执行它:
./my_tmp_script.sh
然后,最初的 shebang #!/bin/bash
将被执行并调用正确的解释器 (bash
)。
采购脚本意味着当前 shell 进程执行脚本命令,而执行脚本 shell 会生成一个新进程并等待它完成(除非在后台启动 &)以退出状态 ($?).
兴趣是修改当前 shell 无法执行脚本的设置。
使用 tcsh shell 获取 bash 脚本是无稽之谈,因为它们是不同的语言,bash 设置可能对 tcsh shell.
错误提示tcsh无法定义和导出环境变量
和bash
MY_TEMP_ENVVAR=123@tmp.com
export MY_TEMP_ENVVAR
使用 tcsh
setenv MY_TEMP_ENVVAR=123@tmp.com
如果可能,另一种解决方案是更改默认值 shell 或在登录时启动 bash,shebang (!#/bin/bash) 在获取脚本文件时无效。
需要像下面那样更改您的文件
!/bin/bash
清除
回声$$
echo "设置环境变量"
setenv MY_TEMP_ENVVAR123@tmp.com
回声$MY_TEMP_ENVVAR
我有一个应该很简单的问题,但我找不到任何解决方案。
我正在尝试在 bash 脚本中做一些简单的设置和环境变量。 运行 来自 bash 终端的脚本工作正常,但是 运行 它来自 tcsh,这是我使用的机器上的默认设置 当我尝试导出我的变量时,我得到了未知的命令。
这是我的非常简单的脚本。 my_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,它工作正常。
我错过了什么?
谢谢
bash 和 tcsh 中的变量语法不同。
在 tcs 中:
set var=val
在bash中:
var=val
source 只是在您的 shell 脚本中加载 shell 脚本,因此预期的语法是调用者 shell 脚本之一。
当您 source
您的脚本时,您当前的 shell 会执行它,而初始的 shebang 将被忽略。由于您当前的 shell 是 tcsh
,它需要 tcsh 语法。如果你想让bash
执行你的脚本,你应该用像chmod a+x my_tmp_script.sh
这样的命令使它可执行,然后直接执行它:
./my_tmp_script.sh
然后,最初的 shebang #!/bin/bash
将被执行并调用正确的解释器 (bash
)。
采购脚本意味着当前 shell 进程执行脚本命令,而执行脚本 shell 会生成一个新进程并等待它完成(除非在后台启动 &)以退出状态 ($?).
兴趣是修改当前 shell 无法执行脚本的设置。
使用 tcsh shell 获取 bash 脚本是无稽之谈,因为它们是不同的语言,bash 设置可能对 tcsh shell.
错误提示tcsh无法定义和导出环境变量
和bash
MY_TEMP_ENVVAR=123@tmp.com
export MY_TEMP_ENVVAR
使用 tcsh
setenv MY_TEMP_ENVVAR=123@tmp.com
如果可能,另一种解决方案是更改默认值 shell 或在登录时启动 bash,shebang (!#/bin/bash) 在获取脚本文件时无效。
需要像下面那样更改您的文件
!/bin/bash
清除
回声$$
echo "设置环境变量"
setenv MY_TEMP_ENVVAR123@tmp.com
回声$MY_TEMP_ENVVAR