A. linux sh脚本无法cd到某目录:cd: can't cd to /opt/test
原因:不是直接在linux上touch建立的sh文件,是在外面新建的,导致无法识别
解决办法:重新手动touch一个文件1.sh,并chmod 755 1.sh就可以运行了
B. linux中的cd "$(dirname "$0")"/是什么意思呢
cd :切换文件夹
$: 返回该命令的结果
dirname :用于取指定路径所在的目录 ,如 dirname /home/ikidou 结果为 /home
$0: 表示当前动行的命令名,一般用于shell 脚本中
cd "$(dirname "$0")"/ 为【 切换到 脚本 所在的目录】可参考《Linux就该这么学》了解更多Linux知识。
C. linux shell脚本执行命令详解
在Linux下,如果你需要执行shell脚本,那么应该使用那个命令呢?下面由我为大家整理了linux shell脚本执行命令的相关知识,希望对大家有帮助!
linux shell脚本执行
linux shell脚本执行方法一: 切换到shell脚本所在的目录(此时,称为工作目录)执行shell脚本:
cd /data/shell
./hello.sh
./的意思是说在当前的工作目录下执行hello.sh。如果不加上./,bash可能会响应找到不到hello.sh的错误信息。因为目前的工作目录(/data/shell)可能不在执行程序默认的搜索路径之列,也就是说,不在环境变量PASH的内容之中。查看PATH的内容可用 echo $PASH 命令。现在的/data/shell就不在环境变量PASH中的,所以必须加上./才可执行。
linux shell脚本执行方法二: 以绝对路径的方式去执行bash shell脚本:
/data/shell/hello.sh
linux shell脚本执行方法三: 直接使用bash 或sh 来执行bash shell脚本:
cd /data/shell
bash hello.sh
或
cd /data/shell
sh hello.sh
注意,若是以方法三的方式来执行,那么,可以不必事先设定shell的执行权限,甚至都不用写shell文件中的第一行(指定bash路径)。因为方法三是将hello.sh作为参数传给sh(bash)命令来执行的。这时不是hello.sh自己来执行,而是被人家调用执行,所以不要执行权限。那么不用指定bash路径自然也好理解了啊。
linux shell脚本执行方法四: 在当前的shell环境中执行bash shell脚本:
cd /data/shell
. hello.sh
或
cd /data/shell
source hello.sh
前三种方法执行shell脚本时都是在当前shell(称为父shell)开启一个子shell环境,此shell脚本就在这个子shell环境中执行。shell脚本执行完后子shell环境随即关闭,然后又回到父shell中。而方法四则是在当前shell中执行的。
D. linux 中“.”和“./”命令分别是什么意思
.表示执行的意思,就是执行这个文件。
./呢就表示执行当前目录下的某个文件,就比如当前目录有一个脚本a.sh,那么./a.sh就表示执行它。
不加参数时,默认切换到用户主目录,即环境变量HOME指定的目录,如root用户的HOME变量为/root,那么cd命令不带参数时便切换到/root目录下。
绝对路径是从跟目录开始的,如/root或/home/sgl,相对路径是相对于当前路径来说的。
假如当前目录在/home/guo下面,那么前面的/home/sgl的相对路径就是../sgl,即当前目录的上级目录下的sgl目录。
(4)linux脚本cd扩展阅读:
参数r是指连同源文件中的子目录一同拷贝。熟悉dos的读者用起这个命令来会觉得更方便,毕竟比在dos下面要少敲两下键盘。
../ 和 ./ 代表的 是上级目录以及当前目录。
处在当前目录复制当前目录下文件到别的目录。
cp_文件名称_别的文件目录路径。"_"是空格
举个例子:在orz文件夹下有两个子文件夹a和b,a中有文件x.c,b中无文件。
E. Linux Shell脚本如何获取当前路径
解答如下:
获取脚本运行所在目标。常用三个方法,推荐第三个
#!/bin/bash
Cur_Dir="$(pwd)"
Cur_Dir="$(cd`dirname$0`;pwd)"
Cur_Dir="$(cd-P"$(dirname"${BASH_SOURCE[0]}")"&&pwd)"
echo${Cur_Dir}
cd${Cur_Dir}
F. 有关linux shell的一个提问,为什么cd 命令在shell脚本不起作用了
获取的目录是当前目录下的路径,当你时入第一个目录时,再进入当前目录的另一个路径,怎么可以跳得过去!
例如:当前目录/home/mydir/ 获取的是 ./tools 和 ./download 当先cd tools目录下之后,再cd download路径,肯定报No such file or directory
G. linux 写一个计划任务的脚本,在每个月1号的凌晨3点定时备份/boot、/etc、 /home、/root
mkdir /bakcup-dir
你顷迅编辑一个shell脚本:
cd ~/tmp
vim b.sh
#!/bin/bash
backups=`date +%H_%M-%m%d` # (1号键旁边到符号` )
cd /backup-dir
tar zcf $backups.tar.gz /home /悔宽root /boot /etc
让crontab来调用碧乎亮
crontab -e
* 3 1 * * sh ~/tmp/b.sh
H. linux里面怎么写个切换目录的脚本
通过脚本切换工作目录,刚开始觉得很简单,直接在脚本中写一个cd语句就搞定了。
但是,其实不然。
执行脚本时候,只是在当前的shell下开了一个子进程,切换目录的操作只对该进程中相关后续指令有效,但改变不了父进程的目录。
因此,当你写好了脚本,并且调用执行时,你的当前工作目录并没有变化。
那么,解决方案呢?
有两种方式解决(都是执行脚本的方式不同,脚本内容依然是一个cd语句。假定脚本为change.sh):
source change.sh
. ./change.sh
第一个点是bash的内部命令,表示在当前shell中运行
后面的“./change.sh”是命令的参数,即要执行的脚本(注:两点之间要有空格)