Linux-获取当前正在执行脚本的绝对路径
常见的一种误区,是使用 pwd 命 令,该命令的作用是“print name of current/working directory”,这才是此命令的真实含义,当前的工作目录,这里没有任何意思说明,这个目录就是脚本存放的目录。所以,这是不对的。你可以试 试 bash shell/a.sh,a.sh 内容是 pwd,你会发现,显示的是执行命令的路径 /home/june,并不是 a.sh 所在路径:/home/june/shell/a.sh
另一个误人子弟的答案,是 $0,这个也是不对的,这个$0是Bash环境下的特殊变量,其真实含义是:
Expands to the name of the shell or shell script. This is set at shell initialization. If bash is invoked with a file of commands, $0 is set to the name of that file. If bash is started with the -c option, then $0 is set to the first argument after the string to be executed, if one is present. Otherwise, it is set to the file name used to invoke bash, as given by argument zero.
这个$0有可能是好几种值,跟调用的方式有关系:
- 使用一个文件调用bash,那$0的值,是那个文件的名字(没说是绝对路径噢) 
- 使用-c选项启动bash的话,真正执行的命令会从一个字符串中读取,字符串后面如果还有别的参数的话,使用从$0开始的特殊变量引用(跟路径无关了) 
- 除此以外,$0会被设置成调用bash的那个文件的名字(没说是绝对路径) 
下面对比下正确答案:
basepath=$(cd `dirname $0`; pwd)
在此解释下basepath :
dirname $0,取得当前执行的脚本文件的父目录 cd `dirname $0`,进入这个目录(切换当前工作目录) pwd,显示当前工作目录(cd执行后的)
由此,我们获得了当前正在执行的脚本的存放路径。
Linux-获取当前正在执行脚本的绝对路径的更多相关文章
- [转]linux shell 获取当前正在执行脚本的绝对路径
		原文链接:http://sexywp.com/bash-how-to-get-the-basepath-of-current-running-script.htm 常见的一种误区,是使用 pwd 命令 ... 
- bash shell 获取当前正在执行脚本的绝对路径
		https://my.oschina.net/leejun2005/blog/150662 http://blog.csdn.net/10km/article/details/51906821 如题, ... 
- ./ . 和#!/bin/bash 辨析Linux如何选择当前执行脚本的shell
		最近遇到一个有趣的问题,让我搞清楚Linux如何选择当前执行脚本的shell 执行cts的的 media stress test 需要安装 android-cts-media-1.0.zip 把这个文 ... 
- [转帖]Linux /tmp目录下执行脚本失败提示Permission denied
		Linux /tmp目录下执行脚本失败提示Permission denied https://www.cnblogs.com/linyfeng/p/11087655.html 国产化的环境上 就有一个 ... 
- Linux下设置定期执行脚本
		下面针对的是非ubuntu环境,会在文章末尾介绍ubuntu的一些区别. 在Linux下,经常需要定期的执行一些脚本从而来实现一些功能. 在Linux下我们用crontab来实现定期的执行脚本这个功能 ... 
- Linux开机启动时执行脚本的方法
		方法 1 – 使用 rc.local利用 /etc/ 中的 rc.local 文件在启动时执行脚本与命令.我们在文件中加上一行来执行脚本,这样每次启动系统时,都会执行该脚本.不过我们首先需要为 /et ... 
- Linux中计划任务执行脚本crontab-简洁版
		我使用的是ubuntu16,所以在ubuntu中一切正常,在其他linux系统中应该都差不多. 1 计划任务,crontab命令选项: -u指定一个用户, -l列出某个用户的任务计划, ... 
- linux中计划任务执行脚本
		我使用的是ubuntu14.4,所以在ubuntu中一切正常,在其他linux系统中应该都差不多. 1 计划任务,crontab命令选项: -u指定一个用户, -l列出某个用户的任务计 ... 
- linux crontab设置定期执行脚本
		Linux下crontab命令的用法 任务调度的crond常驻命令crond 是linux用来定期执行程序的命令.当安装完成操作系统之后,默认便会启动此任务调度命令.crond命令每分锺会定期检查是否 ... 
随机推荐
- Ubuntu 14.10 下安装中文输入法
			系统默认带的是IBUS,这个不怎么好用,我们需要安装一个新的框架FCITX 1 打开软件中心,输入fcitx,安装flexible input method framework 2 下载需要的输入法, ... 
- Scheme vs Schema
			在计算机数据描述领域,Scheme由于原意为“主题”,“方案”,“构想”等,因此一般指比较明确的(具体的)“方案”.“体系”,例如一个术语词表.分类表等,而Schema通常翻译成“模式”,比较强调形式 ... 
- Ch2.Making Reconmmendation in PCI
			做<Programing Collective Intelligence>中chapter 2.Making Recommendation的实例,有3个问题花了好长时间: 1. 遇到报错& ... 
- 【LeetCode OJ】Binary Tree Maximum Path Sum
			Problem Link: http://oj.leetcode.com/problems/binary-tree-maximum-path-sum/ For any path P in a bina ... 
- Android pix转换为sp
			/** * 把pix值转换为sp * * @return */ public static float px2sp(Context context, float pixValue) { final f ... 
- 如何用JS获取ASP.net中的textbox的值 js获不到text值
			<tr> <td class="table_body" style="width: 10%" a ... 
- CodeForces 416D  (贪心)
			Problem Population Size 题目大意 给一个长度为n的序列,由 -1 和正整数组成,-1表示任意的正整数. 将序列分成若干段,使得任意段都是等差数列,求最少段数. 解题分析 可以发 ... 
- 四   GPU 并行编程的存储系统架构
			前言 在用 CUDA 对 GPU 进行并行编程的过程中,除了需要对线程架构要有深刻的认识外,也需要对存储系统架构有深入的了解. 这两个部分是 GPU 编程中最为基础,也是最为重要的部分,需要花时间去理 ... 
- RG100A-AA 中大校园网上网及远程配置
			由于无线网卡用得不爽,wifi经常断,所以想整个路由器,造福群众.在朋友介绍下购得一台已经刷好 Openwrt 的上海贝尔RG100A-AA路由器,根据下面的简单步骤,就能连接上校园网. 一.准备工作 ... 
- AC自动机 专题
			// 求目标串中出现了几个模式串 //==================== #include <stdio.h> #include <algorithm> #include ... 
