Tengo un guión que comienza así
#!/bin/bash
VALKYRIE=~/myProjects/valkyrie
source $VALKYRIE/cluster.conf
pero cuando lo ejecuto vuelve
line 2: ~/myProjects/valkyrie/cluster.conf: No such file or directory
pero el archivo existe y cuando lo ejecuto source ~/myProjects/valkyrie/cluster.conf
funciona bien. ¿Alguna idea? Configuré la VALKYRIE
variable en otro lugar para que el código duro en la ruta no sea una opción
source "${VALKYRIE}/cluster.conf"
.~
no expandirse adecuadamente. Cuando ejecuto su script con una ruta falsa intencionalmente, el error no dice~
, pero expande la ruta. ¿Puedes intentar reemplazar el~
en tu script con la ruta absoluta? Además, intente ejecutar lo siguiente en un scriptecho ~
.$HOME
lugar de~
.~/.pam_environment
no es un script de shell, por lo que no hace las cosas comunes que esperaría de un shell, como la expansión de tilde y la expansión de parámetros, por lo que~
ni$HOME
será reemplazado. Si mueve esa línea a su~/.profile
lugar y agregaexport
al frente, debería funcionar.Respuestas:
~
no parece estar expandiéndose correctamente. Cuando ejecuto su script con una ruta falsa intencionalmente, el error no dice~
, pero expande la ruta (es decir,/home/sparhawk/fakepath
no~/fakepath
. Puede intentar usar en$HOME
lugar de~
, o usar la ruta completa en el script en su lugar.(No estoy seguro de por qué
~
no funciona en su sistema, ya que su script funciona bien para mí).fuente
$HOME
es mejor que~
en una variable~
?x="~/.bashrc"; ls $x
: en el orden de las expansiones para el comando "ls", bash busca una tilde y no la encuentra; finalmente bash ve una variable y la expande. bash no regresa y busca tildes nuevamente, en este punto es solo un personaje simple. y no hay archivos en el directorio actual que comiencen con una tilde.x=~/".bashrc"; ls $x
funciona. Gracias por la info.