shell脚本中source文件出错

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell脚本中source文件出错相关的知识,希望对你有一定的参考价值。

我自己写的脚本中如下
#! user/bin/csh

source cshrc

然后报错
/home/mktzy/mkt_home/bin/cshrc: line 10: setenv: command not found

文件都在同一目录下。
单独在命令行执行 source cshrc
就没有问题

shell的问题。换个shell执行。
你看你现在用户用的是什么shell就用什么shell。不要用csh。
参考技术A source 后面的文件加个绝对路劲试试~~
平时默认都用bin/sh

linux shell脚本被包含是什么意思?.命令和source命令(在脚本中运行脚本,脚本中调用脚本)(脚本包含,父子脚本)

在 shell 编程中,当一个 shell 脚本被另一个 shell 脚本包含,即用 .source 命令包含,则被包含的脚本在当前 shell 进程内执行,并且可以访问当前 shell 进程的环境变量和函数。
此时,$0 代表的是主脚本的名称,而 $BASH_SOURCE 数组则包含了当前脚本的名称和被包含的脚本的名称。
因此,$(dirname "$BASH_SOURCE[0]") 用来获取当前脚本(包括被包含的脚本)所在目录的路径。

示例1:用.命令包含脚本运行

helper.sh

# helper.sh
function greet() 
    echo "Hello, $1"

# main.sh
. ./helper.sh
greet "User"

运行main.sh时,将输出:

Hello, User

用source命令包含脚本运行

# helper.sh
function greet() 
    echo "Hello, $1"

# main.sh
source ./helper.sh
greet "User"

运行main.sh时,也将输出:

Hello, User

参考文章:linux shell脚本获取脚本目录时, ( d i r n a m e “ (dirname “ (dirnameBASH_SOURCE[0]“)与$(dirname $0)有什么区别?

以上是关于shell脚本中source文件出错的主要内容,如果未能解决你的问题,请参考以下文章

shell脚本应用的基本概念

shell脚本应用的基本概念

Shell脚本无法使用cd命令

shell脚本执行source报错

执行shell脚本三种方法的区别:(sh、exec、source)

shell 在脚本中执行了source /etc/profile 不生效