Eu tenho um script que começa assim
#!/bin/bash
VALKYRIE=~/myProjects/valkyrie
source $VALKYRIE/cluster.conf
mas quando eu corro ele retorna
line 2: ~/myProjects/valkyrie/cluster.conf: No such file or directory
mas o arquivo existe e quando eu o executo source ~/myProjects/valkyrie/cluster.conf
ele corre bem. Qualquer ideia? Defino a VALKYRIE
variável em outro lugar, para que o código rígido no caminho não seja uma opção.
source "${VALKYRIE}/cluster.conf"
,.~
não expandir adequadamente. Quando executo seu script com um caminho intencionalmente falso, o erro não diz~
, mas expande o caminho. Você pode tentar substituir o~
no seu script pelo caminho absoluto? Além disso, tente executar o seguinte em um scriptecho ~
.$HOME
vez de~
.~/.pam_environment
não é um script de shell, por isso não faz as coisas comuns que você esperaria de um shell, como expansão de til e expansão de parâmetros, portanto,~
nem$HOME
serão substituídos. Se você mover essa linha para~/.profile
, e adicionarexport
na frente, ela deve funcionar.Respostas:
~
parece não estar se expandindo corretamente. Quando executo seu script com um caminho intencionalmente falso, o erro não diz~
, mas expande o caminho (ou seja,/home/sparhawk/fakepath
não~/fakepath
. Você pode tentar usar em$HOME
vez de~
ou usar o caminho completo no script.(Não sei por
~
que não funciona no seu sistema, pois seu script funciona bem para mim.)fonte
$HOME
é melhor do que~
em uma variável~
?x="~/.bashrc"; ls $x
- na ordem das expansões para o comando "ls", o bash procura um til e não o encontra; eventualmente, o bash vê uma variável e a expande. O bash não volta e procura por tildes novamente; nesse momento, é apenas um personagem comum. e não há arquivos no diretório atual que começam com um til.x=~/".bashrc"; ls $x
funciona. Obrigado pela informação.