Você precisa entender que ~
é normalmente expandido pelo shell; os programas que você chama nunca o veem, eles vêem o caminho completo como inserido pelo bash. Mas isso só acontece quando o til está no início de um argumento (e não é citado).
Se o programa em Python que você está executando usa um módulo como getopt
para analisar sua linha de comando, você pode dar o argumento da opção --data-path
como uma "palavra" separada para permitir a expansão do til:
$ python ptb_word_lm.py --data_path ~/anaconda2/lib/python2.7/...
Em seu próprio código, você pode usar getopt
ou argparse
para o processamento de argumentos, e também pode expandir manualmente os tiles conforme a resposta de @ JacobVlijm sugerida.
PS. O til também é expandido no início de uma expressão de atribuição de variável shell como DIRNAME=~/anaconda2
; embora o til na sua pergunta também siga um sinal de igual, esse uso não tem um significado especial para o shell (é apenas algo passado para um programa) e não ativa a expansão.