使用 Linux shell ,如何从与当前工作目录不同的工作目录启动程序?
例如,我有一个二进制文件helloworld
,可hello-world.txt
在 当前目录 中创建该文件。
该文件在目录内/a
。
目前,我在目录中/b
。我想开始运行程序,../a/helloworld
并hello-world.txt
在第三个目录中找到某个位置/c
。
像这样调用程序:
(cd /c; /a/helloworld)
括号导致生成子壳。然后,该子shell将其工作目录更改为/c
,然后helloworld
从执行/a
。程序退出后,子Shell终止,返回到您从其开始的目录中的父Shell提示符。
错误处理: 为了避免在不更改目录的情况下运行程序,例如,拼写错误时/c
,请执行以下helloworld
条件:
(cd /c && /a/helloworld)
减少内存使用: 为了避免在hello world执行期间子外壳浪费内存,请helloworld
通过exec 调用:
(cd /c && exec /a/helloworld)
[感谢Josh和Juliano提供改善此答案的提示!]
问题内容: 最近,在使用PyCharm时,我无法在代码中使用相对路径。例如,一个简单的将不起作用- 因此,我确定该文件与正在运行的py文件位于同一级别。PyCharm将返回此错误。 FileNotFoundError:[错误2]没有这样的文件或目录: 在StackOverflow上在线阅读答案后,我尝试了多种选择,包括: 更改为 关闭项目,删除.idea文件夹,使用代码打开该文件夹。 重新安装以及
问题内容: 在nodejs中,我使用__dirname。在Golang中这等效吗? 我在Google上搜索并找到了这篇文章http://andrewbrookins.com/tech/golang-get-directory-of- the-current-file/ 。他在哪里使用以下代码 但这是在Golang中做正确的方法还是惯用的方法吗? 问题答案: 应该这样做:
问题内容: 我想使用Java访问我当前的工作目录。 我的代码: 输出: 我的输出不正确,因为C驱动器不是我的当前目录。 如何获得当前目录? 问题答案: 代码: 这将打印从中初始化您的应用程序的当前目录的绝对路径。 说明: 从文档中: 软件包使用当前用户目录解析相对路径名。当前目录表示为系统属性,也就是从其中调用JVM的目录。
问题内容: 我正在制作一个程序包以对服务进行API调用。 我有一个测试包,仅用于测试API调用和测试主包的功能,而我只是将另一个包插入其中。 在我正在工作的主包装中,我有 没关系,但是当我从测试包中调用它时,例如 它告诉我 问题是,它正在寻找内部而不是它所在的位置。 只是为了澄清这些混乱的说法: API包具有从同一目录读取的功能 但是因为我包括了API包,而在我尝试将Testfolder作为CWD
我最近将tomcat应用程序从一台Linux服务器迁移到另一台。从那以后,我在新服务器上面临一个新的文件创建问题。在新服务器中,当我尝试创建文件时失败,这在旧服务器中运行良好: 为了调查这个问题,我使用以下工具打印了工作目录: 这个调试揭示了问题背后的根本原因:旧服务器返回:var/lib/tomcat,而新服务器返回:/(根目录),因为tomcat用户没有(也不应该)对根目录的写入权限,所以无法
问题内容: 我有一个Java程序,希望可以在计算机上的任何位置运行。我想从Cygwin命令提示符下运行它。我编写了脚本来调用Java程序。我将Java程序的位置添加到类路径中,并且当我从Java程序的目录运行它们时,脚本可以工作。但是,当我尝试从任何其他目录运行时,我得到: 这是我的脚本: 将Java行更改为以下内容: 产生相同的结果。 问题答案: 在尝试了所有我能想到的一切之后,我回显了该命令,