Bourne Shell:将〜/ Desktop转换为/ users / me / Desktop

时间:2010-04-27 19:16:15

标签: bash scripting path

keytool无法解析公正的目录。即这是有效的:

keytool -keystore "/users/me/Desktop" ...

这不是:

keytool -keystore "~/Desktop" ...

我可以这样称呼:

keytool -keystore "$(<cmd> ~/Desktop)" ...

更新

我想我应该更具体一点:

这就是我正在做的事情:

myVar=~/Desktop
<allow user to overwrite default value of myVar>
keytool -keystore "$myVar" ...

我不认为在keytool命令中使用$ myVar是不安全的,以防有人在其中放入一些恶意代码。

4 个答案:

答案 0 :(得分:4)

那是因为你引用了这条路。 Keytool或unix中的任何其他命令行程序与wildrcards无关,因为shell用于实际扩展路径名。如果你没有引用这条路,它就会很好用。

答案 1 :(得分:2)

我不认为这是一个编程问题,但你是否在没有引号的情况下尝试了?即。

keytool -keystore ~/Desktop ...

答案 2 :(得分:1)

eval echo“〜/ foo”

e.g。 keytool -keystore $(eval echo~ / Desktop)

答案 3 :(得分:0)

怎么样

keytool -keystore "$(echo ~/Desktop)"

keytool -keystore "$HOME/Desktop"

但是,另一方面,〜/ Desktop也应该可以正常工作。仅使用bash尝试,此处没有任何其他Bourne shell。