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.conffunciona bien. ¿Alguna idea? Configuré la VALKYRIEvariable 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 ~.$HOMElugar de~.~/.pam_environmentno 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$HOMEserá reemplazado. Si mueve esa línea a su~/.profilelugar y agregaexportal 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/fakepathno~/fakepath. Puede intentar usar en$HOMElugar 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
$HOMEes 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 $xfunciona. Gracias por la info.