我想要在不同的文件夹中执行一个文件,大约在四个子目录下。
例如:
我的pwd
可能是/home/directoryA
。但是,我想要执行的文件可能在directoryD
。目前,如果我想执行该文件,我需要转到cd /home/directoryA/directoryB/directoryC/directoryD/
然后执行该文件。或者我可能会这样做src /directoryA/directoryB/directoryC/directoryD/somefile
是否有可能在不实际位于文件所在目录的情况下执行该文件?
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 将是使用的方法。