If you read the manpage you referenced a bit more carfeully, you will find the following lines:
-nosalt
do not use a salt
-salt
use salt (randomly generated or provide with -S option) when encrypting (this is the default).
The -salt option should ALWAYS be used if the key is being derived from a password unless you want compatibility with previous versions of OpenSSL and SSLeay.
Without the -salt option it is possible to perform efficient
dictionary attacks on the password and to attack stream cipher
encrypted data. The reason for this is that without the salt the same
password always generates the same encryption key. When the salt is
being used the first eight bytes of the encrypted data are reserved
for the salt: it is generated at random when encrypting a file and
read from the encrypted file when it is decrypted.
Putting this together we learn:
- You should use a random salt, which gets used in the key derivation process (calculating the encryption key and the IV from the password)
- If you use a salt, the key and the IV and thus the ciphertext won't be deterministic
- Using a random salt is the default behaviour of openssl enc
You can easily check this by running
echo foo |openssl enc -aes-128-cbc -out encrypted -nosalt
and
echo foo |openssl enc -aes-128-cbc -out encrypted
In the first case, the output will be 16 bytes long (one block of AES), in the second case it will be longer, because the salt has to be stored.