如何运行不同目录中的文件

如何运行不同目录中的文件

我想要在不同的文件夹中执行一个文件,大约在四个子目录下。

例如:

我的pwd可能是/home/directoryA。但是,我想要执行的文件可能在directoryD。目前,如果我想执行该文件,我需要转到cd /home/directoryA/directoryB/directoryC/directoryD/然后执行该文件。或者我可能会这样做src /directoryA/directoryB/directoryC/directoryD/somefile

  1. 是否有可能在不实际位于文件所在目录的情况下执行该文件?

  2. somefile是否有一种不进入目录就能执行文件的快捷方式?

答案1

不,您不需要使用:

cd home/directoryA/directoryB/directoryC/DirectoryD
./somefile 

您只需在命令前面加上路径即可运行该命令:

/home/directoryA/directoryB/directoryC/DirectoryD/somefile

因为您已经在,所以/home/directoryA您可以使用当前目录快捷方式.并运行如下命令:

./directoryB/directoryC/DirectoryD/somefile

我注意到 OP 通过其他答案下的评论扩大了范围。以下是一些附加信息:

  • 要找出somefile位于何处,请使用:locate somefile
  • 如果somefile今天添加,您需要先更新定位通过运行 来访问数据库sudo updatedb
  • 当有多个版本somefile位于小路您可以使用 来找出首先执行的是哪一个which somefile
  • 如果您想somefile在不指定目录名称的情况下运行,请将其放在路径中。要检查路径,请使用echo $PATH。常见的路径位置somefile/usr/local/bin(如果它使用 sudo 权限)和/home/your_user_name/bin(您可能必须先创建目录)。
  • 您也可以添加/home/directoryA/directoryB/directoryC/DirectoryD/到路径中,但这样做非常不寻常。不过,您只需键入,somefile无论您在哪个目录中,它都会运行。
  • 当然somefile必须是可执行的,您可以使用以下命令进行设置:chmod a+x /home/directoryA/directoryB/directoryC/DirectoryD/somefile

答案2

当然!如果某个文件被标记为可执行文件,你可以使用以下命令运行它

~/directoryA/directoryB/directoryC/DirectoryD/somefile

想知道某个文件是可执行文件吗?转到其目录并运行

find . -maxdepth 1 -perm -111 -type f

查看该目录中的所有可执行文件。

答案3

shell$PATH变量包含搜索可执行文件的目录。将包含可执行文件的目录添加到其中$PATH,即可从任何地方执行它。

在文件中添加.bashrc

export PATH=$PATH:/../your_directory

答案4

还有另一种方法(不知何故尚未提及),即使用 shell 配置文件(.bashrc.zshrc)。

您可以运行:

# Assuming it is a script you made, changing file permission to make it executable
chmod a+x ~/directoryA/directoryB/directoryC/directoryD/somefile

# Appending your shell profile with an alias to run the script from wherever you are
echo "alias somename=\"source ~/directoryA/directoryB/directoryC/directoryD/somefile\"" >> ~/.profile

# replace ~/.profile with config file of whichever shell you use
# Also replace source with python if the script is a python script or whichever interpreter it requires for execution
# Make sure you have #!/usr/bin/env python or #!/path/to/interpreter on your computer as the first line of your script

尽管上述方法允许从任何地方运行脚本,但您应该确保脚本不依赖于pwd(当前工作目录)来执行(除非有意)。

然后您可以在任何目录中将脚本作为可执行文件运行,例如:

somename

PS:至于为什么不将目录附加到 PATH,只是假设只添加单个可执行文件,而不是添加像 adb-platform-tools 这样的充满可执行文件的目录,在这种情况下,将目录路径附加到 PATH 将是使用的方法。

相关内容