shell 确定脚本文件所在的路径

有时需要在shell脚本中判断其所在的路径,而shell脚本的执行可以是source shell-script 或者./shell-script

判断方法:

SHELLFILE=$0

#source方式执行时,$0是shell的名字:bash,此时使用内建的环境变量得到其参数脚本即可。
if [ "x${SHELLFILE}" = "x-bash" ] ; then
# SHELLFILE=${BASH_ARGV[0]}
SHELLFILE=$BASH_SOURCE
fi
FILE_PATH=$(cd $(dirname $SHELLFILE); pwd)

时间: 2024-09-16 04:16:18

shell 确定脚本文件所在的路径的相关文章

JS魔法堂:获取当前脚本文件的绝对路径

一.前言 当写模块加载器时,获取当前脚本文件的绝对路径作为基础路径是必不可少的一步,下面我们一起来探讨一下这个问题吧! 二.各大浏览器的实现方式 [a]. Chrome和FF 超简单的一句足矣! var getCurrAbsPath = function(){ return document.currentScript.src; }; 这里利用了对象 document.currentScript ,它返回的是当前执行的script元素:然后调用script元素的src属性即可获取脚本文件的绝对路

source insight软件如何知道当前打开的文件所在的路径

问题: 当用source insight 软件编写程序时,忘了我们写的程序保存的位置时该怎么办? 答:在打开的source insight软件窗口中点击菜单栏中的"Project"选项---->Project setting ...------>Project Source Directory下显示的就是项目所在的目录. source insight 的标题栏上的地址显示的是当前文件所在项目文件夹中的位置.

JAVA->查询并显示输入根目录下全部的文件所在目录路径

public static boolean qf(File f,boolean a){      boolean b=false;   if(a==true){      File[] fl=f.listfile();   for(File ffl:fl){    if(ffl.isDirect){    b=ffl.getTotalspace>0;    if(b==true){ System.out.println("This's not a Null Direct: "+f

设置vim的默认工作路径同时与自动设当前编辑的文件所在目录为当前工作路径不冲突

问题: 想让vim自动设当前编辑的文件所在目录为当前工作路径不冲突,但是当vim新建文件的时候,工作路径会又自动切换缓存path下. 如何使当使用vim打开文件时,vim的工作路径是当前文件所在的路径.而当从vim里新建文件的时候,工作路径是自己预设的路径呢? 解决: "自动设当前编辑的文件所在目录为当前工作路径 exec 'cd ' . fnameescape('f:\code') set autochdir "注意,命令的执行顺序不能改变

SHELL编程练习-复制指定文件(保持文件所在目录结构)

1. 目的将/root 目录下的所有大于1M(可自定义) 的文件拷贝到 /tmp/BakDir(可自定义) 目录,需要保持目录结构.例如 /root/reed.file 文件大小为 12M,则会被拷贝到 /tmp/BakDir/root/ 路径位置.2. 难度需连同文件所在的路径一起拷贝.3. 知识点3.1文件和目录的操作(dirname命令)3.2文件查找操作(find命令)3.3SHELL编程基础4. 思路与具体实现4.1思路1)先查找指定的文件:2)根据查找到的文件,输出其所在路径:3)创

构建shell基本脚本

创建简单的shell脚本文件 将shell命令放在一个文本文件中,首先需要用一个文本编辑器(vim) 在创建shell脚本文件时,必须在文件的第一行指定要使用的shell(#!/bin/bash) 格式为: 也可以使用分号在一行输入你想要用的2个命令 #号为脚本的注释(第一行除外) 现在可以运行下试试可能会有点失望会出现以下结果: 所以要跨过第一个障碍是让bash shell能够找到脚本文件(shell会通过PATH环境变量来查找命令)快速查看一下PATH就可以解决我们的问题了: PATH环境变

Oracle使用超大SQL脚本文件恢复数据问题记录

在以前获取的Oracle数据库备份一般都是dmp文件,创建表空间和用户就直接使用imp或者impdp导入即可. 这一次遇到的情况比较特殊,对方提供数据时给我的是使用SQLPlus导出的SQL脚本文件,是Linux系统中导出的,因为很难让对方再次提供数据,因此只有用这个来导入数据.导入速度慢不说,还挺麻烦,不过没办法,问题总得解决. 在这个过程中遇到两大问题: 1. SQL脚本文件太大(超过1G),Windows上看不了内容,不知道怎么导入到数据库中. 一般SQLPlus执行SQL脚本文件倒是容易

Linux - which xxx - 查找执行的命令所在的路径

Linux 下,我们常使用 cd ,grep,vi 等命令,有时候我们要查到这些命令所在的位置,如何做呢? Linux 下有2个命令可完成该功能:which ,whereis which 用来查看当 前要执行的命令所在的路径. whereis 用来查看一个命令或者文件所在的路径, which命令的原理:在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果.也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令. which命令的使用实

python定时器用法 + 获取脚本所在绝对路径 + 定义日志格式 + shell将脚本直接启动到后

python定时器用法 + 获取脚本所在绝对路径 + 定义日志格式 的测试代码 如果用python写好一个有定时器的脚本后,如果脚本里还读了配置文件,那么配置文件路径如果写死的话,有一天要换了存放目录的话,需要修改脚本的配置文件路径,而且每次都要到脚本所在路径用 nohup 启动到后台很麻烦.用 os.path.split(os.path.realpath(sys.argv[0]))[0] 来获取文件所在的绝对路径,配置文件同样扔到和它同级,这样就可以在任意地方启动,一劳永逸~~~ 此用法站在运