如果某些所需文件是不同的目录,我如何在任何地方执行命令?
How can I execute a command anywhere if certain required files are different directories?
假设命令是my_command
并且此命令必须准备当前工作目录中的特定文件(file1、file2 和 file3)。
因为我经常在许多不同的目录中使用my_command
,所以我想将某些文件保留在某个目录中并在工作目录中没有这三个文件的情况下执行my_command
。
我的意思是我不想将这三个文件复制到每个工作目录。
例如:
包含三个文件的目录/home/chest
工作目录:/home/wd
如果我执行命令my_command
,它会自动识别/home/chest/
中的三个文件
我认为这种方法类似于添加 $PATH 而不是可执行文件而只是文件。
似乎文件需要位于当前工作目录中才能使 vasp_std
命令按预期工作,我认为您可以简单地将所有文件添加到主目录的 include 文件夹中,然后然后从您的脚本创建一个符号 link 到这个文件夹。在脚本的末尾,符号 link 将被删除:
#!/bin/bash
# create a symbolic link to our resource folder
ln -s ~/include src
# execute other commands here
# finally remove the symbolic link from the current directory
unlink src
如果 vasp_std
命令要求文件直接放在当前工作目录下,您可以改为为每个文件创建符号 link:
#!/bin/bash
# create link for to all resource files
for file in ~/include/*
do
ln -s $file `basename $file`
done
# execute other commands here
# remove any previously created links
for file in ~/include/*
do
unlink `basename $file`
done
假设命令是my_command
并且此命令必须准备当前工作目录中的特定文件(file1、file2 和 file3)。
因为我经常在许多不同的目录中使用my_command
,所以我想将某些文件保留在某个目录中并在工作目录中没有这三个文件的情况下执行my_command
。
我的意思是我不想将这三个文件复制到每个工作目录。
例如:
包含三个文件的目录/home/chest
工作目录:/home/wd
如果我执行命令my_command
,它会自动识别/home/chest/
我认为这种方法类似于添加 $PATH 而不是可执行文件而只是文件。
似乎文件需要位于当前工作目录中才能使 vasp_std
命令按预期工作,我认为您可以简单地将所有文件添加到主目录的 include 文件夹中,然后然后从您的脚本创建一个符号 link 到这个文件夹。在脚本的末尾,符号 link 将被删除:
#!/bin/bash
# create a symbolic link to our resource folder
ln -s ~/include src
# execute other commands here
# finally remove the symbolic link from the current directory
unlink src
如果 vasp_std
命令要求文件直接放在当前工作目录下,您可以改为为每个文件创建符号 link:
#!/bin/bash
# create link for to all resource files
for file in ~/include/*
do
ln -s $file `basename $file`
done
# execute other commands here
# remove any previously created links
for file in ~/include/*
do
unlink `basename $file`
done